Programas
Publicador de contenidos
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> nivelist [in template "20100#20136#422041" at line 178, column 36]
----
Tip: If the failing expression is known to be 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: #list nivelist as niveL [in template "20100#20136#422041" at line 178, column 29]
---- 1<style type="text/css"> 2 .searchTemplate .searchTitle{ 3 padding: 20px 0px; 4 background: #f2f2f2; 5 text-align: center; 6 } 7 .searchTemplate .searchTitle h4{ 8 font-style: italic; 9 font-weight: 600; 10 color: #3d3b41; 11 width: 100% 12 } 13 @media (min-width: 768px){ 14 .searchTemplate .formSearch{ 15 padding: 30px 50px; 16 background-color: #f8f8f8; 17 width: 100%; 18 } 19 } 20 @media (max-width: 767px){ 21 .searchTemplate .formSearch{ 22 padding: 30px 30px; 23 background-color: #f8f8f8; 24 width: 100%; 25 } 26 } 27 .searchTemplate .formSearch form{ 28 width: 100%; 29 } 30 .searchTemplate .formSearch .searchCont{ 31 display: flex; 32 align-items: center; 33 padding: 15px 0px; 34 } 35 .searchTemplate .formSearch .searchCont label{ 36 font-weight: 600; 37 float: left; 38 width: 120px; 39 text-align: right; 40 padding: 0px 10px; 41 } 42 .searchTemplate .formSearch .radioSearch span{ 43 font-weight: 600; 44 height: 60px; 45 width: 100px; 46 display: block; 47 float: left; 48 padding-right: 15px; 49 text-align: right; 50 } 51 .searchTemplate .formSearch .radioSearch label{ 52 max-width: 150px; 53 } 54 .searchTemplate .formSearch .radioSede #sede2{ 55 display: none; 56 } 57 .searchTemplate .formSearch button { 58 background-color: #ed6b00; 59 border-color: #ed6b00; 60 color: #fff; 61 display: inline-block; 62 font-weight: 600; 63 text-align: center; 64 white-space: nowrap; 65 vertical-align: middle; 66 user-select: none; 67 border: 0px solid transparent; 68 padding: .375rem .75rem; 69 font-size: 1.2rem; 70 line-height: 1.5; 71 border-radius: .0px; 72 float: right; 73 } 74 75 .searchTemplate .formSearch button#limpiar{ 76 margin-left: 20px; 77 } 78 79 .searchTemplate .formSearch input[type=text], .searchTemplate .formSearch select{ 80 width: 100%; 81 float: left; 82 display: block; 83 padding: .375rem .75rem; 84 font-size: 1rem; 85 line-height: 1.5; 86 color: #495057; 87 background-color: #fff; 88 background-clip: padding-box; 89 border: 2px solid #c2c1c2; 90 border-radius: 0rem; 91 } 92 .searchTemplate .formSearch #facultad{ 93 94 } 95 .searchTemplate .formSearch #nivel{ 96 97 } 98 .searchTemplate #itemContainer{ 99 width: 100%; 100 } 101 .searchTemplate .informacion-pregrado{ 102 padding: 25px; 103 border-bottom: 2px dotted #979797; 104 } 105 .searchTemplate .informacion-pregrado .col-md-4{ 106 display: flex; 107 align-items: center; 108 } 109 .searchTemplate .informacion-pregrado .verprograma{ 110 background-color: #0056b3; 111 color: #fff; 112 display: inline-block; 113 text-decoration: none; 114 font-weight: 600; 115 text-align: center; 116 white-space: nowrap; 117 vertical-align: middle; 118 padding: .375rem .75rem; 119 font-size: 1.2rem; 120 line-height: 1.5; 121 border-radius: 5px; 122 } 123</style> 124<#if entries?has_content> 125 <#list entries as entry> 126 <#assign renderer = entry.getAssetRenderer() /> 127 <#assign className = renderer.getClassName() /> 128 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) /> 129 <#if assetLinkBehavior != "showFullContent"> 130 <#assign viewURL=renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 131 </#if> 132 133 <#assign docXml=saxReaderUtil.read(renderer.getArticle().getContent()) /> 134 135 <#assign struct=renderer.getArticle().getDDMStructure() /> 136 <#assign nodos=struct.getDefinition() /> 137 138 <#assign json=nodos?eval /> 139 <#assign fields=json.fields /> 140 141 <#list fields as field> 142 <#if field.options??> 143 <#if field?index == 1> 144 <#assign faculist = field.options> 145 </#if> 146 <#if field?index == 2> 147 <#assign nivelist = field.options> 148 </#if> 149 <#if field?index == 4> 150 <#assign modalist = field.options> 151 </#if> 152 <#if field?index == 5> 153 <#assign jornlist = field.options> 154 </#if> 155 <#if field?index == 7> 156 <#assign sedelist = field.options> 157 </#if> 158 </#if> 159 </#list> 160 </#list> 161</#if> 162<div class="searchTemplate"> 163 <div class="searchTitle row" style="margin-left: 0px; margin-right: 0px;"> 164 <h4>Encuentre su programa de interés</h4> 165 </div> 166 <div class="row" style="margin-left: 0px; margin-right: 0px;"> 167 <div class="formSearch"> 168 <form id=""> 169 <div class="row" style="margin-left: 0px; margin-right: 0px;"> 170 <div class="col-md-8 searchCont"> 171 <label for="search">Programa</label> 172 <input type="text" id="search" placeholder="Ejemplo: Biología aplicada"> 173 </div> 174 <div class="col-md-4 searchCont"> 175 <label for="nivel-filtro" >Nivel</label> 176 <select id="nivel-filtro"> 177 <option value="0" selected></option> 178 <#list nivelist as niveL> 179 <option value="${niveL.value}">${niveL.value}</option> 180 </#list> 181 </select> 182 </div> 183 </div> 184 <div class="row" style="margin-left: 0px; margin-right: 0px;"> 185 <div class="col-md-12 searchCont"> 186 <label for="facultad-filtro">Facultad</label> 187 <select id="facultad-filtro"> 188 <option value="0" selected></option> 189 <#list faculist as facuL> 190 <option value="${facuL.value}">${facuL.value}</option> 191 </#list> 192 </select> 193 </div> 194 </div> 195 <div class="row" style="margin-left: 0px; margin-right: 0px;"> 196 <div class="col-md-4 radioSearch radioSede"> 197 <span>Sede</span> 198 <#list sedelist as sedeL> 199 <label id="sede${sedeL?index}"><input type="radio" name="sede-filtro" value="${sedeL.value}">${sedeL.value?chop_linebreak}</input></label><br> 200 </#list> 201 </div> 202 <div class="col-md-4 radioSearch"> 203 <span>Jornada</span> 204 <#list jornlist as jornL> 205 <label><input type="radio" name="jorn-filtro" value="${jornL.value}"> 206 ${jornL.value}</input></label><br> 207 </#list> 208 </div> 209 210 </div> 211 <button id="limpiar" onclick="clearFilters(); return false;">Limpiar</button> 212 <button id="buscar" onclick="updateFilters(); return false;">Buscar</button> 213 </form> 214 </div> 215 </div> 216 <div class="row list" style="margin-left: 0px; margin-right: 0px;"> 217 <ul id="itemContainer"> 218 <#if entries?has_content> 219 <#list entries as entry> 220 <#assign renderer = entry.getAssetRenderer() /> 221 <#assign className = renderer.getClassName() /> 222 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) /> 223 <#if assetLinkBehavior != "showFullContent"> 224 <#assign viewURL=renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 225 </#if> 226 <li> 227 <#assign docXml=saxReaderUtil.read(renderer.getArticle().getContent()) /> 228 229 <#assign matricula=docXml.valueOf("//dynamic-element[@name='Textobovx']/dynamic-content/text()") /> 230 231 <#assign modalidad=docXml.valueOf("//dynamic-element[@name='Modalidad']/dynamic-content/text()") /> 232 233 <#assign duracion=docXml.valueOf("//dynamic-element[@name='Texto3hhx']/dynamic-content/text()") /> 234 235 <#assign sede=docXml.selectNodes("//dynamic-element[@name='Sede']") /> 236 237 <#assign jornada=docXml.valueOf("//dynamic-element[@name='Jornada']/dynamic-content") /> 238 239 <#assign nivel=docXml.valueOf("//dynamic-element[@name='Nivel']/dynamic-content/text()") /> 240 241 <#assign facultad=docXml.valueOf("//dynamic-element[@name='Facultad']/dynamic-content/text()") /> 242 243 <#assign titulo=docXml.valueOf("//dynamic-element[@name='TituloQueOtorga']/dynamic-content/text()") /> 244 245 <#assign urlp=docXml.valueOf("//dynamic-element[@name='URLDePrograma']/dynamic-content/text()") /> 246 247 <div class="informacion-pregrado row" style="margin-left: 0px; margin-right: 0px;"> 248 <div class="col-md-8"> 249 <h4 class="header-title">${entry.getTitle(locale)}</h4> 250 <div class="contenido"> 251 <b>Título: </b>${titulo}<br> 252 <b>Modalidad: </b><span class="modalidad">${modalidad}</span> - <span class="jornada">${jornada}</span><br> 253 <b>Duración: </b>${duracion}<br> 254 <b>Sede: </b><span class="sede"> 255 <#list sede as entry> 256 ${entry.valueOf("dynamic-content")} 257 </#list> 258 </span><br> 259 <span style="display: none;" class="nivel">${nivel}</span> 260 <span style="display: none;" class="facultad">${facultad}</span> 261 </div> 262 </div> 263 <div class="col-md-4"> 264 <a class="verprograma" href="${urlp}">Ver programa</a> 265 </div> 266 </div> 267 </li> 268 </#list> 269 </#if> 270 </ul> 271 </div> 272</div> 273<script type="text/javascript"> 274 275$(document).ready(function(){ 276 $('#itemContainer li').each(function() { 277 $(this).hide(); 278 }); 279 return false; 280}); 281 282 283 284var 285 sede= null, jornad= null, moda= null, facultad= null, nivel= null, words= null; 286facultad = $( "#facultad-filtro option:selected" ).text(); 287nivel = $( "#nivel-filtro option:selected" ).text(); 288function updateFilters() { 289 $('#itemContainer li').hide().filter(function() { 290 var 291 self = $(this), 292 result = true; // not guilty until proven guilty 293 if (sede && (sede != '')) { 294 result = result && true === ($(this).find('.sede').text().toLowerCase().indexOf(sede) > -1); 295 } 296 if (moda && (moda != '')) { 297 result = result && moda === $(this).find('.modalidad').text(); 298 } 299 if (nivel && (nivel != '')) { 300 result = result && nivel === $(this).find('.nivel').text(); 301 } 302 if (facultad && (facultad != '')) { 303 result = result && facultad === $(this).find('.facultad').text(); 304 } 305 if (jornad && (jornad != '')) { 306 result = result && true === ($(this).find('.jornada').text().toLowerCase().indexOf(jornad) > -1); 307 } 308 if (words && (words != '')) { 309 result = result && true === (normalize($(this).find('.informacion-pregrado').text().toLowerCase()).indexOf(normalize(words)) > -1); 310 } 311 return result; 312 }).show(); 313} 314 315var normalize = (function() { 316 var from = "ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç", 317 to = "AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuuNnCc", 318 mapping = {}; 319 320 for(var i = 0, j = from.length; i < j; i++ ){ 321 mapping[ from.charAt( i ) ] = to.charAt( i ); 322 } 323 return function( str ) { 324 var ret = []; 325 for( var i = 0, j = str.length; i < j; i++ ) { 326 var c = str.charAt( i ); 327 if( mapping.hasOwnProperty( str.charAt( i ) ) ){ 328 ret.push( mapping[ c ] ); 329 }else{ 330 ret.push( c ); 331 } 332 } 333 return ret.join( '' ); 334 } 335})(); 336 337function clearFilters(){ 338 $('#search').prop('value', ""); 339 $('[name=sede-filtro]').prop('checked', false); 340 $('[name=jorn-filtro]').prop('checked', false); 341 $('[name=moda-filtro]').prop('checked', false); 342 $("#facultad-filtro option[value=0]").prop('selected', 'selected'); 343 $("#nivel-filtro option[value=0]").prop('selected', 'selected'); 344 sede= null, jornad= null, moda= null, words= null; 345 $('#itemContainer li').each(function() { 346 $(this).hide(); 347 }); 348 return false; 349} 350 351$('[name=sede-filtro]').click(function() { 352 sede = $('[name=sede-filtro]:checked').val().toLowerCase(); 353 updateFilters(); 354}); 355 356$('[name=jorn-filtro]').click(function() { 357 jornad = $('[name=jorn-filtro]:checked').val().toLowerCase(); 358 updateFilters(); 359}); 360 361$('[name=moda-filtro]').click(function() { 362 moda = $('[name=moda-filtro]:checked').val(); 363 updateFilters(); 364}); 365 366$('#nivel-filtro').on('change', function() { 367 nivel = $( "#nivel-filtro option:selected" ).text(); 368 updateFilters(); 369}); 370 371$('#facultad-filtro').on('change', function() { 372 facultad = $( "#facultad-filtro option:selected" ).text(); 373 updateFilters(); 374}); 375 376$('#search').on("keyup",function() { 377 words = $( "#search").val().toLowerCase(); 378 updateFilters(); 379}); 380</script>