Administración de Proyectos PMI Method
DESCRIPCION_ADMON_PROYECTOS_PMI_BL5
An error occurred while processing the template.
Java method "jdk.proxy3.$Proxy84.getLayout(long, boolean, long)" threw an exception when invoked on jdk.proxy3.$Proxy84 object "com.liferay.layout.internal.service.LayoutLocalServiceWrapper@644a9ca"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign layout = layoutService.getLay... [in template "97#123#141411" at line 262, column 89]
---- 1<style> 2 .acordion-bl5 button[aria-expanded="true"] a{ 3 color:white; 4 } 5 6 .acordion-bl5 .collapsed a { 7 color: #42b4e3 !important; 8 text-decoration: none; 9 } 10 11 .acordion-bl5 .btn-link { 12 color: #42b4e3; 13 text-decoration: none; 14 } 15 16 .acordion-bl5 .btn-link:focus{ 17 box-shadow: none; 18 text-decoration: none; 19 color:white; 20 } 21 22 .acordion-bl5 .btn-link:hover { 23 text-decoration: none; 24 color:white; 25 } 26 27 .pasos a:hover{ 28 text-decoration:none; 29 } 30 31 ::-webkit-scrollbar { 32 height: 9px; 33 width: 9px; 34 background: #e3e3e3; 35 } 36 37 ::-webkit-scrollbar-thumb { 38 background: #42b4e3; 39 -webkit-border-radius: 1ex; 40 -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.75); 41 } 42 43 ::-webkit-scrollbar-corner { 44 background: #e3e3e3; 45 } 46 47 .pasos .nav-pills .nav-link.active{ 48 background:none; 49 color:black; 50 } 51 52 .text-blue-pasos-iteso{ 53 color:#42b4e3; 54 } 55 56 .bg-blue-iteso{ 57 background:#004270; 58 } 59 60 .number-iteso{ 61 border: 1px solid; 62 width: 40px; 63 height: 40px; 64 } 65 66 .btn-link:focus { 67 box-shadow: none; 68 text-decoration: none; 69 } 70 71 .card-header .collapsed{ 72 color:#42b4e3; 73 } 74 75 .tab-content-bl5 *{ 76 font-size: 20px; 77 font-style: normal; 78 line-height: 1.38; 79 color: #030a23; 80 } 81 82 .tab-content-bl5 * .table thead th{ 83 border-bottom: 2px solid #42b4e3; 84 } 85 86 .tab-content-bl5 * .table th,.tab-content-bl5 * .table td { 87 border-bottom: 1px solid #42b4e3; 88 border-color: #42b4e3 !important; 89 } 90 91 .iframe-iteso{ 92 margin-top:105px; 93 margin-bottom:72px; 94 margin-left:74px; 95 margin-right:74px; 96 padding-right: 3rem; 97 padding-left: 1rem; 98 font-family: 'Degular-Regular'; 99 overflow-y: scroll; 100 /*height: 855px;*/ 101 height: 100%; 102 overflow: hidden; 103 /*box-shadow:0 4px 10px -2px rgb(0 0 0 / 10%);*/ 104 } 105 106 .iframe-iteso center iframe, 107 .mobile-bl5-scroll center iframe { 108 width: 100%; 109 } 110 111 .lista-bl5{ 112 font-size: 1.4em; 113 } 114 115 .detalle-colap-bl5{ 116 margin-top:53px; 117 overflow-y: scroll; 118 height: 855px; 119 box-shadow:0 4px 10px -2px rgb(0 0 0 / 10%); 120 } 121 122 .acordion-bl5 .collapsed .number-iteso { 123 border: 1px solid #42b4e3; 124 color:#42b4e3; 125 } 126 127 .acordion-bl5 .collapsed .fa-plus-circle{ 128 color:#42b4e3 !important; 129 } 130 131 .acordion-bl5 .fa-plus-circle{ 132 color:white; 133 } 134 135 .acordion-bl5 .number-iteso { 136 border: 1px solid white; 137 color: white; 138 } 139 140 .acordion-bl5 .fa-plus-circle:before { 141 content: "\f056"; 142 /*menos*/ 143 } 144 145 .acordion-bl5 .collapsed .fa-plus-circle:before { 146 content: "\f055"; 147 color: #42b4e3; 148 /*menos*/ 149 } 150 151 .mobile-bl5-scroll{ 152 overflow-y: scroll; 153 height: 400px; 154 padding-right: 30px; 155 font-family: 'Degular-Regular'; 156 } 157 158 .mobile-bl5-scroll strong, 159 .mobile-bl5-scroll strong a, 160 .mobile-bl5-scroll ul li a{ 161 /*color: #030a23;*/ 162 color:black; 163 } 164</style> 165 166<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/> 167<#assign groupUtil = serviceLocator.findService('com.liferay.portal.kernel.service.GroupLocalService')> 168<#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 169<!-- custom Field --> 170<#assign basica = themeDisplay.getSiteGroup().getExpandoBridge().getAttribute("Basica")> 171<#assign Basica_Liga = themeDisplay.getSiteGroup().getExpandoBridge().getAttribute("Basica_Liga")> 172<!-- Fin custom Field --> 173<!-- Se obtienen lista de web content --> 174<#assign url_public = themeDisplay.getPathFriendlyURLPublic()> 175<#assign articles = []/> 176 177<#assign contenido1 = parentStructureFieldSet23555.contenido1> 178<#if contenido1.getData()?has_content??> 179 <#if contenido1.getData()?has_content && contenido1.getData()?matches("[0-9]+") > 180 <#assign articleExist = JournalArticleLocalService.getArticlesByResourcePrimKey(contenido1.getData()?number)> 181 <#if articleExist?size gt 0 > 182 <#assign article = JournalArticleLocalService.getLatestArticle(contenido1.getData()?number)> 183 <#assign articles = articles + [article] /> 184 <#else> 185 <#assign articleExistId = JournalArticleLocalService.hasArticle(groupId, contenido1.getData())> 186 <#if articleExistId> 187 <#assign article = JournalArticleLocalService.getLatestArticle(groupId, contenido1.getData())> 188 <#assign articles = articles + [article] /> 189 </#if> 190 </#if> 191 </#if> 192</#if> 193 194<#assign contenido2 = parentStructureFieldSet23555.contenido2> 195<#if contenido2.getSiblings()?has_content> 196 <#list contenido2.getSiblings() as articulo2> 197 <#if articulo2.getData()?has_content && articulo2.getData()?matches("[0-9]+") > 198 <#assign articleExist = JournalArticleLocalService.getArticlesByResourcePrimKey(articulo2.getData()?number)> 199 <#if articleExist?size gt 0 > 200 <#assign article = JournalArticleLocalService.getLatestArticle(articulo2.getData()?number)> 201 <#assign articles = articles + [article] /> 202 <#else> 203 <#assign articleExistId = JournalArticleLocalService.hasArticle(groupId, articulo2.getData())> 204 <#if articleExistId> 205 <#assign article = JournalArticleLocalService.getLatestArticle(groupId, articulo2.getData())> 206 <#assign articles = articles + [article] /> 207 </#if> 208 </#if> 209 </#if> 210 </#list> 211</#if> 212<!-- Fin de lista de web content --> 213 214<!-- Funcion para obtener icono --> 215<#function activarIcon contador isMobile> 216 <#attempt> 217 <#if isMobile == true> 218 <#if getterUtil.getBoolean(iconoFieldSet.icono.getData())> 219 <#return '<div><p class="number-iteso rounded-circle mr-3 mb-0 d-flex justify-content-center align-items-center"><i class="fas ${iconoFieldSet.iconoFieldSetFieldSet.selectIcon.getData()}"></i></p></div>'> 220 <#else> 221 <#return "<div><p class='number-iteso rounded-circle mr-3 mb-0 d-flex justify-content-center align-items-center'>${contador}</p></div>"> 222 </#if> 223 <#else> 224 <#if getterUtil.getBoolean(iconoFieldSet.icono.getData())> 225 <#return "<div><p class='number-iteso rounded-circle d-flex justify-content-center align-items-center'><i class='fas ${iconoFieldSet.iconoFieldSetFieldSet.selectIcon.getData()}' style='font-size: 1.2em;'></i></p></div>"> 226 <#else> 227 <#return "<div><p class='number-iteso rounded-circle d-flex justify-content-center align-items-center'>${contador}</p></div>"> 228 </#if> 229 </#if> 230 <#recover> 231 Fallo en la funcion activarIcon. 232 </#attempt> 233</#function> 234<!-- Fin funcion para obtener icono --> 235 236<section class="container-fluid pasos d-none d-lg-block" style="background-color: #eaecf0;"> 237 <section class="py-7 container-it"> 238 <section class="row"> 239 <div class="col-md-12 col-lg-5 bg-blue-iteso degular-bold"> 240 <section class="row justify-content-center"> 241 <article class="col-10"> 242 <div class="nav flex-column nav-pills mb-4 pb-2" id="v-pills-tab" role="tablist" aria-orientation="vertical"> 243 <h4 class="text-white text-left" style="font-size: 2.813em;margin-top: 93px;margin-bottom: 75px;">${titulobl5.getData()}</h4> 244 <#assign x = 0> 245 <#if articles?has_content> 246 <#list articles as cur_artlist> 247 <#assign x ++> 248 <#--<#assign documentlist = saxReaderUtil.read(cur_artlist.getContentByLocale(request.locale)) />--> 249 <#assign documentlist = saxReaderUtil.read(cur_artlist.getContentByLocale(themeDisplay.getLocale())) /> 250 <#assign rootlist = documentlist.getRootElement()> 251 <#assign titulo = rootlist.selectSingleNode("dynamic-element[@name='titulo']/dynamic-content").getText()/> 252 <!------------------------------basica liga---------------> 253 <#if cur_artlist.getDDMStructureKey() == Basica_Liga> 254 <#assign link = rootlist.selectSingleNode("dynamic-element[@name='link']/dynamic-content").getText()/> 255 <#assign linkjson = jsonFactoryUtil.createJSONObject(link)> 256 <#assign url = rootlist.selectSingleNode("dynamic-element[@name='url']/dynamic-content").getText()/> 257 <!---------- Validación de la liga -----------> 258 <#if link != ""> 259 <#assign linkid = link?split("@")> 260 <#assign group = groupUtil.getGroup(cur_artlist.getGroupId())> 261 <#assign groupFriendly = group.getFriendlyURL()> 262 <#assign layout = layoutService.getLayout(linkjson.getLong("groupId") , linkjson.getBoolean("privateLayout"),linkjson.getLong("layoutId"))> 263 <#assign layoutFriendly = layout.getFriendlyURL()> 264 <#assign link_page = "${url_public}${groupFriendly}${layoutFriendly}"> 265 <!---------- Contruccion url con idenficador -----------> 266 <a href="${link_page}"> 267 <section class="d-flex justify-content-start align-items-center text-blue-pasos-iteso"> 268 <article class="mr-3"> 269 <!---------- Se obtine la funcion del icono -----------> 270 ${activarIcon(x, false)} 271 </article> 272 <article> 273 <!---------- Titulo de la lista -----------> 274 <p class="lista-bl5" >${titulo}</p> 275 <!---------- Fin de titulo de la lista -----------> 276 </article> 277 </section> 278 </a> 279 <!---------- Fin contruccion url con idenficador -----------> 280 <#else> 281 <!---------- Validacion de url con identificador de estructura -----------> 282 <a href="${url}"> 283 <section class="mb-3 d-flex justify-content-start align-items-center text-blue-pasos-iteso"> 284 <article class="mr-3"> 285 <!---------- Se obtine la funcion del icono -----------> 286 ${activarIcon(x, false)} 287 </article> 288 <article> 289 <!---------- Titulo de la lista -----------> 290 <p class="lista-bl5">${titulo}</p> 291 <!---------- Fin de titulo de la lista -----------> 292 </article> 293 </section> 294 </a> 295 <!---------- Fin de validacion de url con identificador de estructura -----------> 296 </#if> 297 <!---------- Fin de validación de la liga -----------> 298 <#else> 299 <!------------------------------FIN basica liga---------------> 300 <#if x==1> 301 <a class="nav-link p-0 active" id="v-pills-${x}-tab" data-toggle="pill" href="#v-pills-${x}" role="tab" aria-controls="v-pills-${x}" aria-selected="true"> 302 <section class="mb-3 d-flex justify-content-start align-items-center text-blue-pasos-iteso"> 303 <article class="mr-3"> 304 <!---------- Se obtine la funcion del icono -----------> 305 ${activarIcon(x, false)} 306 </article> 307 <article> 308 <!---------- Titulo de la lista -----------> 309 <p class="lista-bl5">${titulo}</p> 310 <!---------- Fin de titulo de la lista -----------> 311 </article> 312 </section> 313 </a> 314 <#else> 315 <a class="nav-link p-0" id="v-pills-${x}-tab" data-toggle="pill" href="#v-pills-${x}" role="tab" aria-controls="v-pills-${x}" aria-selected="false"> 316 <section class="mb-3 d-flex justify-content-start align-items-center text-blue-pasos-iteso"> 317 <article class="mr-3"> 318 <!---------- Se obtine la funcion del icono -----------> 319 ${activarIcon(x, false)} 320 </article> 321 <article> 322 <!---------- Titulo de la lista -----------> 323 <p class="lista-bl5">${titulo}</p> 324 <!---------- Fin de titulo de la lista -----------> 325 </article> 326 </section> 327 </a> 328 </#if> 329 </#if> 330 </#list> 331 </#if> 332 </div> 333 </article> 334 </section> 335 </div> 336 <!---------- Seccion del contenido -----------> 337 <div class="col-md-12 col-lg-7" style="background: white;"> 338 <div class="tab-content tab-content-bl5 h-100" id="v-pills-tabContent"> 339 <#assign y = 0> 340 <#if articles?has_content> 341 <!---------- Lista de articulos -----------> 342 <#list articles as cur_art> 343 <#assign y++> 344 <#--<#assign document = saxReaderUtil.read(cur_art.getContentByLocale(request.locale)) />--> 345 <#assign document = saxReaderUtil.read(cur_art.getContentByLocale(themeDisplay.getLocale())) /> 346 <#assign root = document.getRootElement()> 347 <!---------- Validacion de estructura -----------> 348 <#if cur_art.getDDMStructureKey() == Basica_Liga > 349 <#assign link = root.selectSingleNode("dynamic-element[@name='link']/dynamic-content").getText()/> 350 <#assign linkjson = jsonFactoryUtil.createJSONObject(link)> 351 <#assign url = root.selectSingleNode("dynamic-element[@name='url']/dynamic-content").getText()/> 352 <#else> 353 <!---------- Obtener el detalle de los elementos -----------> 354 <#assign tag = root.selectSingleNode("dynamic-element[@name='tag']/dynamic-content").getText()/> 355 <#assign titulo = root.selectSingleNode("dynamic-element[@name='titulo']/dynamic-content").getText()/> 356 <#assign IdGeneral = themeDisplay.getSiteGroup().getExpandoBridge().getAttribute("IdGeneral")> 357 <#if root.selectSingleNode("dynamic-element[@name='detalle']/dynamic-content")??> 358 <#assign detalle = root.selectSingleNode("dynamic-element[@name='detalle']/dynamic-content").getText()/> 359 </#if> 360 <#if y==1> <!-- Validacion para el iniciador de elementos --> 361 <div class="tab-pane h-100 fade show active" style="padding-bottom: 10em;" id="v-pills-${y}" role="tabpanel" aria-labelledby="v-pills-${y}-tab"> 362 <!-- Seccion del iframe --> 363 <article class="iframe-iteso "> 364 <#if detalle??> 365 ${detalle} 366 </#if> 367 </article> 368 <!-- Fin de seccion del iframe --> 369 </div> 370 <#else> 371 <div class="tab-pane h-100 fade " style="padding-bottom: 10em;" id="v-pills-${y}" role="tabpanel" aria-labelledby="v-pills-${y}-tab"> 372 <!-- Seccion del iframe --> 373 <article class="iframe-iteso "> 374 <#if detalle??> 375 ${detalle} 376 </#if> 377 </article> 378 <!-- Fin de seccion del iframe --> 379 </div> 380 </#if> 381 <!---------- Fin de obtener el detalle de los elementos -----------> 382 </#if> 383 <!---------- Fin de validacion de estructura -----------> 384 </#list> 385 <!---------- Fin de lista de articulos -----------> 386 </#if> 387 </div> 388 </div> 389 <!---------- fin de seccion del contenido -----------> 390 </section> 391 </section> 392</section> 393<!----------------------------------- Seccion para movil ------------------------------> 394<div id="accordion" class="degular-bold d-block d-lg-none acordion-bl5"> 395 <!---------- Titulo para seccion movil -----------> 396 <section class="bg-blue-iteso"> 397 <h2 class="py-4 container-it m-0 text-white">${titulobl5.getData()}</h2> 398 </section> 399 <!---------- Fin de titulo para seccion movil -----------> 400 <#assign w = 0> 401 <#if articles?has_content> 402 <!-------- Obteniendo la lista para movil --------> 403 <#list articles as cur_artlist> 404 <#assign w ++> 405 <#--<#assign documentlist = saxReaderUtil.read(cur_artlist.getContentByLocale(request.locale)) />--> 406 <#assign documentlist = saxReaderUtil.read(cur_artlist.getContentByLocale(themeDisplay.getLocale())) /> 407 <#assign rootlist = documentlist.getRootElement()> 408 <#assign titulo = rootlist.selectSingleNode("dynamic-element[@name='titulo']/dynamic-content").getText()/> 409 <!-- Validando para obtener el detalle --> 410 <#if rootlist.selectSingleNode("dynamic-element[@name='detalle']/dynamic-content")??> 411 <#assign detalle = rootlist.selectSingleNode("dynamic-element[@name='detalle']/dynamic-content").getText()/> 412 </#if> 413 <!-- Fin para validar el detalle --> 414 <!--------------- Validacion basica liga ---------------> 415 <#if cur_artlist.getDDMStructureKey() == Basica_Liga > 416 <#assign link = rootlist.selectSingleNode("dynamic-element[@name='link']/dynamic-content").getText()/> 417 <#assign linkjson = jsonFactoryUtil.createJSONObject(link)> 418 <#assign url = rootlist.selectSingleNode("dynamic-element[@name='url']/dynamic-content").getText()/> 419 <!-- Validacion del link --> 420 <#if link != ""> 421 <#assign linkid = link?split("@")> 422 <#assign group = groupUtil.getGroup(cur_artlist.getGroupId())> 423 <#assign groupFriendly = group.getFriendlyURL()> 424 <#assign layout = layoutService.getLayout(linkjson.getLong("groupId") , linkjson.getBoolean("privateLayout"),linkjson.getLong("layoutId"))> 425 <#assign layoutFriendly = layout.getFriendlyURL()> 426 <#assign link_page = "${url_public}${groupFriendly}${layoutFriendly}"> 427 <div class="card-header bg-blue-iteso rounded-0 container-it" id="heading${w}"> 428 <h5 class="mb-0 "> 429 <button class="btn btn-link d-flex align-items-center justify-content-between w-100 collapsed p-0" data-toggle="collapse" data-target="#collapse${w}" aria-expanded="false" aria-controls="collapse${w}"> 430 <article class="d-flex align-items-center"> 431 <a href="${link_page}"> 432 ${activarIcon(w, true)} 433 <a href="${link_page}" class="text-left" style="font-size: 1.2em;">${titulo}</a><!-- Se coloca la url para la lista del elemento --> 434 </a> 435 </article> 436 <i class="fal fa-plus-circle" style="font-size: 30px;"></i> 437 </button> 438 </h5> 439 </div> 440 <#else> 441 <!-- Se obtiene url de la estrutura y seccion para el vinculo --> 442 <div class="card-header bg-blue-iteso rounded-0 container-it" id="heading${w}"> 443 <h5 class="mb-0 "> 444 <button class="btn btn-link d-flex align-items-center justify-content-between w-100 collapsed p-0" data-toggle="collapse" data-target="#collapse${w}" aria-expanded="false" aria-controls="collapse${w}"> 445 <article class="d-flex align-items-center"> 446 ${activarIcon(w, true)} 447 <!-- Se coloca la url para la lista --> 448 <a href="${url}" class="text-left" style="font-size: 1em;">${titulo}</a> 449 </article> 450 <i class="fal fa-plus-circle" style="font-size: 30px;"></i> 451 </button> 452 </h5> 453 </div> 454 <!-- Fin para la url de la estrutura --> 455 </#if> 456 <!-- Fin de validacion del link --> 457 <#else> 458 <!-- Seccion para obtener los detalles --> 459 <div class="card m-0 border-0"> 460 <div class="card-header bg-blue-iteso rounded-0 container-it" id="heading${w}"> 461 <h5 class="mb-0 "> 462 <button class="btn btn-link d-flex align-items-center justify-content-between w-100 collapsed p-0" data-toggle="collapse" data-target="#collapse${w}" aria-expanded="false" aria-controls="collapse${w}"> 463 <article class="d-flex align-items-center"> 464 ${activarIcon(w, true)} 465 <a class="text-left" style="font-size: 1em;">${titulo}</a> 466 </article> 467 <i class="fal fa-plus-circle" style="font-size: 30px;"></i> 468 </button> 469 </h5> 470 </div> 471 <div id="collapse${w}" class="collapse" aria-labelledby="heading${w}" data-parent="#accordion"> 472 <div class="card-body container-it"> 473 <!-- Colocando la variable del detalle --> 474 <section class="mobile-bl5-scroll"> 475 ${detalle} 476 </section> 477 <!-- Fin de la seccion para la variable del detalle --> 478 </div> 479 </div> 480 </div> 481 <!-- Fin de seccion del detalle --> 482 </#if> 483 </#list> 484 </#if> 485</div> 486<script> 487 $(".pasos .text-blue-pasos-iteso").hover(function() { 488 $(this).css("color", "white"); 489 $(this).find(".number-iteso").css("border-color", "white"); 490 }, function() { 491 $(this).css("color", "#42b4e3"); 492 $(this).find(".number-iteso").css("border-color", "#42b4e3"); 493 }); 494 495 $("#accordionBL5 .number-iteso").hover(function() { 496 $(this).css("color", "white"); 497 $(this).find(".number-iteso").css("border-color", "white"); 498 }, function() { 499 $(this).css("color", "#42b4e3"); 500 $(this).find(".number-iteso").css("border-color", "#42b4e3"); 501 }); 502</script> ADMON_PROYECTOS_RELACIONADOS_BC7-P
También te pueden interesar otros programas como:
CALENDARIO_CTA3
Programación 2026
Sé parte del ITESO
Solicita más información