Estudiantes
Servicios estudiantes
Lo Último
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> renderer.getArticle [in template "20100#20136#422041" at line 133, column 44] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- 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: #assign docXml = saxReaderUtil.read(r... [in template "20100#20136#422041" at line 133, column 9] ----
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 <div class="col-md-4 radioSearch">
210 <span>Modalidad</span>
211 <#list modalist as modaL>
212 <label><input type="radio" name="moda-filtro" value="${modaL.value}">${modaL.value}</input></label><br>
213 </#list>
214 </div>
215
216 </div>
217 <button id="limpiar" onclick="clearFilters(); return false;">Limpiar</button>
218 <button id="buscar" onclick="updateFilters(); return false;">Buscar</button>
219 </form>
220 </div>
221 </div>
222 <div class="row list" style="margin-left: 0px; margin-right: 0px;">
223 <ul id="itemContainer">
224 <#if entries?has_content>
225 <#list entries as entry>
226 <#assign renderer = entry.getAssetRenderer() />
227 <#assign className = renderer.getClassName() />
228 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) />
229 <#if assetLinkBehavior != "showFullContent">
230 <#assign viewURL=renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) />
231 </#if>
232 <li>
233 <#assign docXml=saxReaderUtil.read(renderer.getArticle().getContent()) />
234
235 <#assign matricula=docXml.valueOf("//dynamic-element[@name='Textobovx']/dynamic-content/text()") />
236
237 <#assign modalidad=docXml.valueOf("//dynamic-element[@name='Modalidad']/dynamic-content/text()") />
238
239 <#assign duracion=docXml.valueOf("//dynamic-element[@name='Texto3hhx']/dynamic-content/text()") />
240
241 <#assign sede=docXml.selectNodes("//dynamic-element[@name='Sede']") />
242
243 <#assign jornada=docXml.valueOf("//dynamic-element[@name='Jornada']/dynamic-content") />
244
245 <#assign nivel=docXml.valueOf("//dynamic-element[@name='Nivel']/dynamic-content/text()") />
246
247 <#assign facultad=docXml.valueOf("//dynamic-element[@name='Facultad']/dynamic-content/text()") />
248
249 <#assign titulo=docXml.valueOf("//dynamic-element[@name='TituloQueOtorga']/dynamic-content/text()") />
250
251 <#assign urlp=docXml.valueOf("//dynamic-element[@name='URLDePrograma']/dynamic-content/text()") />
252
253 <div class="informacion-pregrado row" style="margin-left: 0px; margin-right: 0px;">
254 <div class="col-md-8">
255 <h4 class="header-title">${entry.getTitle(locale)}</h4>
256 <div class="contenido">
257 <b>Título: </b>${titulo}<br>
258 <b>Modalidad: </b><span class="modalidad">${modalidad}</span> - <span class="jornada">${jornada}</span><br>
259 <b>Duración: </b>${duracion}<br>
260 <b>Sede: </b><span class="sede">
261 <#list sede as entry>
262 ${entry.valueOf("dynamic-content")}
263 </#list>
264 </span><br>
265 <span style="display: none;" class="nivel">${nivel}</span>
266 <span style="display: none;" class="facultad">${facultad}</span>
267 </div>
268 </div>
269 <div class="col-md-4">
270 <a class="verprograma" href="${urlp}">Ver programa</a>
271 </div>
272 </div>
273 </li>
274 </#list>
275 </#if>
276 </ul>
277 </div>
278</div>
279<script type="text/javascript">
280
281$(document).ready(function(){
282 $('#itemContainer li').each(function() {
283 $(this).hide();
284 });
285 return false;
286});
287
288
289
290var
291 sede= null, jornad= null, moda= null, facultad= null, nivel= null, words= null;
292facultad = $( "#facultad-filtro option:selected" ).text();
293nivel = $( "#nivel-filtro option:selected" ).text();
294function updateFilters() {
295 $('#itemContainer li').hide().filter(function() {
296 var
297 self = $(this),
298 result = true; // not guilty until proven guilty
299 if (sede && (sede != '')) {
300 result = result && true === ($(this).find('.sede').text().toLowerCase().indexOf(sede) > -1);
301 }
302 if (moda && (moda != '')) {
303 result = result && moda === $(this).find('.modalidad').text();
304 }
305 if (nivel && (nivel != '')) {
306 result = result && nivel === $(this).find('.nivel').text();
307 }
308 if (facultad && (facultad != '')) {
309 result = result && facultad === $(this).find('.facultad').text();
310 }
311 if (jornad && (jornad != '')) {
312 result = result && true === ($(this).find('.jornada').text().toLowerCase().indexOf(jornad) > -1);
313 }
314 if (words && (words != '')) {
315 result = result && true === (normalize($(this).find('.informacion-pregrado').text().toLowerCase()).indexOf(normalize(words)) > -1);
316 }
317 return result;
318 }).show();
319}
320
321var normalize = (function() {
322 var from = "ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç",
323 to = "AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuuNnCc",
324 mapping = {};
325
326 for(var i = 0, j = from.length; i < j; i++ ){
327 mapping[ from.charAt( i ) ] = to.charAt( i );
328 }
329 return function( str ) {
330 var ret = [];
331 for( var i = 0, j = str.length; i < j; i++ ) {
332 var c = str.charAt( i );
333 if( mapping.hasOwnProperty( str.charAt( i ) ) ){
334 ret.push( mapping[ c ] );
335 }else{
336 ret.push( c );
337 }
338 }
339 return ret.join( '' );
340 }
341})();
342
343function clearFilters(){
344 $('#search').prop('value', "");
345 $('[name=sede-filtro]').prop('checked', false);
346 $('[name=jorn-filtro]').prop('checked', false);
347 $('[name=moda-filtro]').prop('checked', false);
348 $("#facultad-filtro option[value=0]").prop('selected', 'selected');
349 $("#nivel-filtro option[value=0]").prop('selected', 'selected');
350 sede= null, jornad= null, moda= null, words= null;
351 $('#itemContainer li').each(function() {
352 $(this).hide();
353 });
354 return false;
355}
356
357$('[name=sede-filtro]').click(function() {
358 sede = $('[name=sede-filtro]:checked').val().toLowerCase();
359 updateFilters();
360});
361
362$('[name=jorn-filtro]').click(function() {
363 jornad = $('[name=jorn-filtro]:checked').val().toLowerCase();
364 updateFilters();
365});
366
367$('[name=moda-filtro]').click(function() {
368 moda = $('[name=moda-filtro]:checked').val();
369 updateFilters();
370});
371
372$('#nivel-filtro').on('change', function() {
373 nivel = $( "#nivel-filtro option:selected" ).text();
374 updateFilters();
375});
376
377$('#facultad-filtro').on('change', function() {
378 facultad = $( "#facultad-filtro option:selected" ).text();
379 updateFilters();
380});
381
382$('#search').on("keyup",function() {
383 words = $( "#search").val().toLowerCase();
384 updateFilters();
385});
386</script>
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing: ==> renderer.getArticle [in template "20100#20136#10458639" at line 133, column 44] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- 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: #assign docXml = saxReaderUtil.read(r... [in template "20100#20136#10458639" at line 133, column 9] ----
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
179 </select>
180 </div>
181 </div>
182 <div class="row" style="margin-left: 0px; margin-right: 0px;">
183 <div class="col-md-12 searchCont">
184 <label for="facultad-filtro">Facultad</label>
185
186 </div>
187 </div>
188 <div class="row" style="margin-left: 0px; margin-right: 0px;">
189 <div class="col-md-4 radioSearch radioSede">
190 <span>Sede</span>
191 <#list sedelist as sedeL>
192 <label id="sede${sedeL?index}"><input type="radio" name="sede-filtro" value="${sedeL.value}">${sedeL.value?chop_linebreak}</input></label><br>
193 </#list>
194 </div>
195 <div class="col-md-4 radioSearch">
196 <span>Jornada</span>
197 <#list jornlist as jornL>
198 <label><input type="radio" name="jorn-filtro" value="${jornL.value}">
199 ${jornL.value}</input></label><br>
200 </#list>
201 </div>
202 <div class="col-md-4 radioSearch">
203 <span>Modalidad</span>
204 <#list modalist as modaL>
205 <label><input type="radio" name="moda-filtro" value="${modaL.value}">${modaL.value}</input></label><br>
206 </#list>
207 </div>
208
209 </div>
210 <button id="limpiar" onclick="clearFilters(); return false;">Limpiar</button>
211 <button id="buscar" onclick="updateFilters(); return false;">Buscar</button>
212 </form>
213 </div>
214 </div>
215 <div class="row list" style="margin-left: 0px; margin-right: 0px;">
216 <ul id="itemContainer">
217 <#if entries?has_content>
218 <#list entries as entry>
219 <#assign renderer = entry.getAssetRenderer() />
220 <#assign className = renderer.getClassName() />
221 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) />
222 <#if assetLinkBehavior != "showFullContent">
223 <#assign viewURL=renderer.getURLViewInContext(renderRequest, renderResponse, viewURL) />
224 </#if>
225 <li>
226 <#assign docXml=saxReaderUtil.read(renderer.getArticle().getContent()) />
227
228 <#assign matricula=docXml.valueOf("//dynamic-element[@name='Textobovx']/dynamic-content/text()") />
229
230 <#assign modalidad=docXml.valueOf("//dynamic-element[@name='Modalidad']/dynamic-content/text()") />
231
232 <#assign duracion=docXml.valueOf("//dynamic-element[@name='Texto3hhx']/dynamic-content/text()") />
233
234 <#assign sede=docXml.selectNodes("//dynamic-element[@name='Sede']") />
235
236 <#assign jornada=docXml.valueOf("//dynamic-element[@name='Jornada']/dynamic-content") />
237
238 <#assign nivel=docXml.valueOf("//dynamic-element[@name='Nivel']/dynamic-content/text()") />
239
240 <#assign facultad=docXml.valueOf("//dynamic-element[@name='Facultad']/dynamic-content/text()") />
241
242 <#assign titulo=docXml.valueOf("//dynamic-element[@name='TituloQueOtorga']/dynamic-content/text()") />
243
244 <#assign urlp=docXml.valueOf("//dynamic-element[@name='URLDePrograma']/dynamic-content/text()") />
245
246 <div class="informacion-pregrado row" style="margin-left: 0px; margin-right: 0px;">
247 <div class="col-md-8">
248 <h4 class="header-title">${entry.getTitle(locale)}</h4>
249 <div class="contenido">
250 <b>Título: </b>${titulo}<br>
251 <b>Modalidad: </b><span class="modalidad">${modalidad}</span> - <span class="jornada">${jornada}</span><br>
252 <b>Duración: </b>${duracion}<br>
253 <b>Sede: </b><span class="sede">
254 <#list sede as entry>
255 ${entry.valueOf("dynamic-content")}
256 </#list>
257 </span><br>
258 <span style="display: none;" class="nivel">${nivel}</span>
259 <span style="display: none;" class="facultad">${facultad}</span>
260 </div>
261 </div>
262 <div class="col-md-4">
263 <a class="verprograma" href="${urlp}">Ver programa</a>
264 </div>
265 </div>
266 </li>
267 </#list>
268 </#if>
269 </ul>
270 </div>
271</div>
272<script type="text/javascript">
273
274$(document).ready(function(){
275 $('#itemContainer li').each(function() {
276 $(this).hide();
277 });
278 return false;
279});
280
281
282
283var
284 sede= null, jornad= null, moda= null, facultad= null, nivel= null, words= null;
285facultad = $( "#facultad-filtro option:selected" ).text();
286nivel = $( "#nivel-filtro option:selected" ).text();
287function updateFilters() {
288 $('#itemContainer li').hide().filter(function() {
289 var
290 self = $(this),
291 result = true; // not guilty until proven guilty
292 if (sede && (sede != '')) {
293 result = result && true === ($(this).find('.sede').text().toLowerCase().indexOf(sede) > -1);
294 }
295 if (moda && (moda != '')) {
296 result = result && moda === $(this).find('.modalidad').text();
297 }
298 if (nivel && (nivel != '')) {
299 result = result && nivel === $(this).find('.nivel').text();
300 }
301 if (facultad && (facultad != '')) {
302 result = result && facultad === $(this).find('.facultad').text();
303 }
304 if (jornad && (jornad != '')) {
305 result = result && true === ($(this).find('.jornada').text().toLowerCase().indexOf(jornad) > -1);
306 }
307 if (words && (words != '')) {
308 result = result && true === (normalize($(this).find('.informacion-pregrado').text().toLowerCase()).indexOf(normalize(words)) > -1);
309 }
310 return result;
311 }).show();
312}
313
314var normalize = (function() {
315 var from = "ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç",
316 to = "AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuuNnCc",
317 mapping = {};
318
319 for(var i = 0, j = from.length; i < j; i++ ){
320 mapping[ from.charAt( i ) ] = to.charAt( i );
321 }
322 return function( str ) {
323 var ret = [];
324 for( var i = 0, j = str.length; i < j; i++ ) {
325 var c = str.charAt( i );
326 if( mapping.hasOwnProperty( str.charAt( i ) ) ){
327 ret.push( mapping[ c ] );
328 }else{
329 ret.push( c );
330 }
331 }
332 return ret.join( '' );
333 }
334})();
335
336function clearFilters(){
337 $('#search').prop('value', "");
338 $('[name=sede-filtro]').prop('checked', false);
339 $('[name=jorn-filtro]').prop('checked', false);
340 $('[name=moda-filtro]').prop('checked', false);
341 $("#facultad-filtro option[value=0]").prop('selected', 'selected');
342 $("#nivel-filtro option[value=0]").prop('selected', 'selected');
343 sede= null, jornad= null, moda= null, words= null;
344 $('#itemContainer li').each(function() {
345 $(this).hide();
346 });
347 return false;
348}
349
350$('[name=sede-filtro]').click(function() {
351 sede = $('[name=sede-filtro]:checked').val().toLowerCase();
352 updateFilters();
353});
354
355$('[name=jorn-filtro]').click(function() {
356 jornad = $('[name=jorn-filtro]:checked').val().toLowerCase();
357 updateFilters();
358});
359
360$('[name=moda-filtro]').click(function() {
361 moda = $('[name=moda-filtro]:checked').val();
362 updateFilters();
363});
364
365$('#nivel-filtro').on('change', function() {
366 nivel = $( "#nivel-filtro option:selected" ).text();
367 updateFilters();
368});
369
370$('#facultad-filtro').on('change', function() {
371 facultad = $( "#facultad-filtro option:selected" ).text();
372 updateFilters();
373});
374
375$('#search').on("keyup",function() {
376 words = $( "#search").val().toLowerCase();
377 updateFilters();
378});
379</script>