Administración de Proyectos PMI Method
DESCRIPCION_ADMON_PROYECTOS_PMI_BL5
An error occurred while processing the template.
Java method "jdk.proxy3.$Proxy88.getLayout(long, boolean, long)" threw an exception when invoked on jdk.proxy3.$Proxy88 object "com.liferay.layout.internal.service.LayoutLocalServiceWrapper@60181038"; 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 261, 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 rootlist = documentlist.getRootElement()> 250 <#assign titulo = rootlist.selectSingleNode("dynamic-element[@name='titulo']/dynamic-content").getText()/> 251 <!------------------------------basica liga---------------> 252 <#if cur_artlist.getDDMStructureKey() == Basica_Liga> 253 <#assign link = rootlist.selectSingleNode("dynamic-element[@name='link']/dynamic-content").getText()/> 254 <#assign linkjson = jsonFactoryUtil.createJSONObject(link)> 255 <#assign url = rootlist.selectSingleNode("dynamic-element[@name='url']/dynamic-content").getText()/> 256 <!---------- Validación de la liga -----------> 257 <#if link != ""> 258 <#assign linkid = link?split("@")> 259 <#assign group = groupUtil.getGroup(cur_artlist.getGroupId())> 260 <#assign groupFriendly = group.getFriendlyURL()> 261 <#assign layout = layoutService.getLayout(linkjson.getLong("groupId") , linkjson.getBoolean("privateLayout"),linkjson.getLong("layoutId"))> 262 <#assign layoutFriendly = layout.getFriendlyURL()> 263 <#assign link_page = "${url_public}${groupFriendly}${layoutFriendly}"> 264 <!---------- Contruccion url con idenficador -----------> 265 <a href="${link_page}"> 266 <section class="d-flex justify-content-start align-items-center text-blue-pasos-iteso"> 267 <article class="mr-3"> 268 <!---------- Se obtine la funcion del icono -----------> 269 ${activarIcon(x, false)} 270 </article> 271 <article> 272 <!---------- Titulo de la lista -----------> 273 <p class="lista-bl5" >${titulo}</p> 274 <!---------- Fin de titulo de la lista -----------> 275 </article> 276 </section> 277 </a> 278 <!---------- Fin contruccion url con idenficador -----------> 279 <#else> 280 <!---------- Validacion de url con identificador de estructura -----------> 281 <a href="${url}"> 282 <section class="mb-3 d-flex justify-content-start align-items-center text-blue-pasos-iteso"> 283 <article class="mr-3"> 284 <!---------- Se obtine la funcion del icono -----------> 285 ${activarIcon(x, false)} 286 </article> 287 <article> 288 <!---------- Titulo de la lista -----------> 289 <p class="lista-bl5">${titulo}</p> 290 <!---------- Fin de titulo de la lista -----------> 291 </article> 292 </section> 293 </a> 294 <!---------- Fin de validacion de url con identificador de estructura -----------> 295 </#if> 296 <!---------- Fin de validación de la liga -----------> 297 <#else> 298 <!------------------------------FIN basica liga---------------> 299 <#if x==1> 300 <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"> 301 <section class="mb-3 d-flex justify-content-start align-items-center text-blue-pasos-iteso"> 302 <article class="mr-3"> 303 <!---------- Se obtine la funcion del icono -----------> 304 ${activarIcon(x, false)} 305 </article> 306 <article> 307 <!---------- Titulo de la lista -----------> 308 <p class="lista-bl5">${titulo}</p> 309 <!---------- Fin de titulo de la lista -----------> 310 </article> 311 </section> 312 </a> 313 <#else> 314 <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"> 315 <section class="mb-3 d-flex justify-content-start align-items-center text-blue-pasos-iteso"> 316 <article class="mr-3"> 317 <!---------- Se obtine la funcion del icono -----------> 318 ${activarIcon(x, false)} 319 </article> 320 <article> 321 <!---------- Titulo de la lista -----------> 322 <p class="lista-bl5">${titulo}</p> 323 <!---------- Fin de titulo de la lista -----------> 324 </article> 325 </section> 326 </a> 327 </#if> 328 </#if> 329 </#list> 330 </#if> 331 </div> 332 </article> 333 </section> 334 </div> 335 <!---------- Seccion del contenido -----------> 336 <div class="col-md-12 col-lg-7" style="background: white;"> 337 <div class="tab-content tab-content-bl5 h-100" id="v-pills-tabContent"> 338 <#assign y = 0> 339 <#if articles?has_content> 340 <!---------- Lista de articulos -----------> 341 <#list articles as cur_art> 342 <#assign y++> 343 <#assign document = saxReaderUtil.read(cur_art.getContentByLocale(request.locale)) /> 344 <#assign root = document.getRootElement()> 345 <!---------- Validacion de estructura -----------> 346 <#if cur_art.getDDMStructureKey() == Basica_Liga > 347 <#assign link = root.selectSingleNode("dynamic-element[@name='link']/dynamic-content").getText()/> 348 <#assign linkjson = jsonFactoryUtil.createJSONObject(link)> 349 <#assign url = root.selectSingleNode("dynamic-element[@name='url']/dynamic-content").getText()/> 350 <#else> 351 <!---------- Obtener el detalle de los elementos -----------> 352 <#assign tag = root.selectSingleNode("dynamic-element[@name='tag']/dynamic-content").getText()/> 353 <#assign titulo = root.selectSingleNode("dynamic-element[@name='titulo']/dynamic-content").getText()/> 354 <#assign IdGeneral = themeDisplay.getSiteGroup().getExpandoBridge().getAttribute("IdGeneral")> 355 <#if root.selectSingleNode("dynamic-element[@name='detalle']/dynamic-content")??> 356 <#assign detalle = root.selectSingleNode("dynamic-element[@name='detalle']/dynamic-content").getText()/> 357 </#if> 358 <#if y==1> <!-- Validacion para el iniciador de elementos --> 359 <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"> 360 <!-- Seccion del iframe --> 361 <article class="iframe-iteso "> 362 <#if detalle??> 363 ${detalle} 364 </#if> 365 </article> 366 <!-- Fin de seccion del iframe --> 367 </div> 368 <#else> 369 <div class="tab-pane h-100 fade " style="padding-bottom: 10em;" id="v-pills-${y}" role="tabpanel" aria-labelledby="v-pills-${y}-tab"> 370 <!-- Seccion del iframe --> 371 <article class="iframe-iteso "> 372 <#if detalle??> 373 ${detalle} 374 </#if> 375 </article> 376 <!-- Fin de seccion del iframe --> 377 </div> 378 </#if> 379 <!---------- Fin de obtener el detalle de los elementos -----------> 380 </#if> 381 <!---------- Fin de validacion de estructura -----------> 382 </#list> 383 <!---------- Fin de lista de articulos -----------> 384 </#if> 385 </div> 386 </div> 387 <!---------- fin de seccion del contenido -----------> 388 </section> 389 </section> 390</section> 391<!----------------------------------- Seccion para movil ------------------------------> 392<div id="accordion" class="degular-bold d-block d-lg-none acordion-bl5"> 393 <!---------- Titulo para seccion movil -----------> 394 <section class="bg-blue-iteso"> 395 <h2 class="py-4 container-it m-0 text-white">${titulobl5.getData()}</h2> 396 </section> 397 <!---------- Fin de titulo para seccion movil -----------> 398 <#assign w = 0> 399 <#if articles?has_content> 400 <!-------- Obteniendo la lista para movil --------> 401 <#list articles as cur_artlist> 402 <#assign w ++> 403 <#assign documentlist = saxReaderUtil.read(cur_artlist.getContentByLocale(request.locale)) /> 404 <#assign rootlist = documentlist.getRootElement()> 405 <#assign titulo = rootlist.selectSingleNode("dynamic-element[@name='titulo']/dynamic-content").getText()/> 406 <!-- Validando para obtener el detalle --> 407 <#if rootlist.selectSingleNode("dynamic-element[@name='detalle']/dynamic-content")??> 408 <#assign detalle = rootlist.selectSingleNode("dynamic-element[@name='detalle']/dynamic-content").getText()/> 409 </#if> 410 <!-- Fin para validar el detalle --> 411 <!--------------- Validacion basica liga ---------------> 412 <#if cur_artlist.getDDMStructureKey() == Basica_Liga > 413 <#assign link = rootlist.selectSingleNode("dynamic-element[@name='link']/dynamic-content").getText()/> 414 <#assign linkjson = jsonFactoryUtil.createJSONObject(link)> 415 <#assign url = rootlist.selectSingleNode("dynamic-element[@name='url']/dynamic-content").getText()/> 416 <!-- Validacion del link --> 417 <#if link != ""> 418 <#assign linkid = link?split("@")> 419 <#assign group = groupUtil.getGroup(cur_artlist.getGroupId())> 420 <#assign groupFriendly = group.getFriendlyURL()> 421 <#assign layout = layoutService.getLayout(linkjson.getLong("groupId") , linkjson.getBoolean("privateLayout"),linkjson.getLong("layoutId"))> 422 <#assign layoutFriendly = layout.getFriendlyURL()> 423 <#assign link_page = "${url_public}${groupFriendly}${layoutFriendly}"> 424 <div class="card-header bg-blue-iteso rounded-0 container-it" id="heading${w}"> 425 <h5 class="mb-0 "> 426 <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}"> 427 <article class="d-flex align-items-center"> 428 <a href="${link_page}"> 429 ${activarIcon(w, true)} 430 <a href="${link_page}" class="text-left" style="font-size: 1.2em;">${titulo}</a><!-- Se coloca la url para la lista del elemento --> 431 </a> 432 </article> 433 <i class="fal fa-plus-circle" style="font-size: 30px;"></i> 434 </button> 435 </h5> 436 </div> 437 <#else> 438 <!-- Se obtiene url de la estrutura y seccion para el vinculo --> 439 <div class="card-header bg-blue-iteso rounded-0 container-it" id="heading${w}"> 440 <h5 class="mb-0 "> 441 <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}"> 442 <article class="d-flex align-items-center"> 443 ${activarIcon(w, true)} 444 <!-- Se coloca la url para la lista --> 445 <a href="${url}" class="text-left" style="font-size: 1em;">${titulo}</a> 446 </article> 447 <i class="fal fa-plus-circle" style="font-size: 30px;"></i> 448 </button> 449 </h5> 450 </div> 451 <!-- Fin para la url de la estrutura --> 452 </#if> 453 <!-- Fin de validacion del link --> 454 <#else> 455 <!-- Seccion para obtener los detalles --> 456 <div class="card m-0 border-0"> 457 <div class="card-header bg-blue-iteso rounded-0 container-it" id="heading${w}"> 458 <h5 class="mb-0 "> 459 <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}"> 460 <article class="d-flex align-items-center"> 461 ${activarIcon(w, true)} 462 <a class="text-left" style="font-size: 1em;">${titulo}</a> 463 </article> 464 <i class="fal fa-plus-circle" style="font-size: 30px;"></i> 465 </button> 466 </h5> 467 </div> 468 <div id="collapse${w}" class="collapse" aria-labelledby="heading${w}" data-parent="#accordion"> 469 <div class="card-body container-it"> 470 <!-- Colocando la variable del detalle --> 471 <section class="mobile-bl5-scroll"> 472 ${detalle} 473 </section> 474 <!-- Fin de la seccion para la variable del detalle --> 475 </div> 476 </div> 477 </div> 478 <!-- Fin de seccion del detalle --> 479 </#if> 480 </#list> 481 </#if> 482</div> 483<script> 484 $(".pasos .text-blue-pasos-iteso").hover(function() { 485 $(this).css("color", "white"); 486 $(this).find(".number-iteso").css("border-color", "white"); 487 }, function() { 488 $(this).css("color", "#42b4e3"); 489 $(this).find(".number-iteso").css("border-color", "#42b4e3"); 490 }); 491 492 $("#accordionBL5 .number-iteso").hover(function() { 493 $(this).css("color", "white"); 494 $(this).find(".number-iteso").css("border-color", "white"); 495 }, function() { 496 $(this).css("color", "#42b4e3"); 497 $(this).find(".number-iteso").css("border-color", "#42b4e3"); 498 }); 499</script> ADMON_PROYECTOS_RELACIONADOS_BC7-P
También te pueden interesar otros programas como:
CALENDARIO_CTA3
Programación 2025
Sé parte del ITESO
Solicita más información