Te encuentras en:
- Trabaja y fórmate con nosotros
- Histórico de ofertas de prácticas
Histórico de ofertas de prácticas
Te facilitamos la relación de los procesos de selección de estudiantes cerrados que hemos solicitado para que realicen prácticas formativas en nuestra empresa.
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> titleSel.selectSingleNode(rootElement) [in template "20155#20195#427709" at line 64, column 50]
----
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: #assign title = titleSel.selectSingle... [in template "20155#20195#427709" at line 64, column 33]
----
1<#assign groupId = getterUtil.getLong(groupId)>
2<#assign group = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService").getGroup(groupId)>
3<#assign theme_display = request.getAttribute("LIFERAY_SHARED_THEME_DISPLAY")>
4<#assign imagesFolder = theme_display.getPathThemeImages()>
5
6<#if locale == "en_US">
7 <#assign newLocale = "ca_ES">
8<#else>
9 <#assign newLocale = locale>
10</#if>
11
12<#function miliSeconds dateString firstDate>
13 <#assign params = dateString?split(":")>
14
15 <#if params?size == 2>
16 <#assign param1 = params[0]>
17 <#assign param2 = params[1]>
18 <#assign param1 = getterUtil.getLong(param1)*3600000>
19 <#assign param2 = getterUtil.getLong(param2)*60000>
20 <#assign finalMilSec = param1 + param2>
21 <#assign finalMilSecLong = getterUtil.getLong(finalMilSec)>
22 <#assign resultLong = firstDate + finalMilSecLong>
23
24 <#return resultLong>
25 </#if>
26</#function>
27
28<#-- Función para validar el formato de hora hh:mm -->
29<#function isValidTimeFormat timeString>
30 <#return timeString?matches("^[0-2]?\\d:[0-5]\\d$")>
31</#function>
32
33<#if entries?has_content>
34 <#if locale != "en_US">
35 <div class="choose-ticket__search-bar">
36 <div class="form__field">
37 <div class="f__text__6_wrapper">
38 <input id="oferta-practicas-search-input" type="text" placeholder="<@liferay.language key="offer.helperSearchHistoric"/>" value=""/>
39 </div>
40 </div>
41 </div>
42 </#if>
43 <#assign today = .now?date>
44
45 <#if locale != "en_US">
46 <ul id="historical-students-offers-ul" class="list list--links list--links-b">
47 </#if>
48 <#assign count = 0>
49 <#foreach curEntry in entries>
50 <#assign renderer = curEntry.getAssetRenderer()>
51 <#assign className = renderer.getClassName()>
52
53 <#assign dataPub = "">
54 <#assign dataExp = "">
55 <#assign isExpired = false>
56
57 <#if className == "com.liferay.journal.model.JournalArticle">
58 <#assign journalArticle = renderer.getArticle()>
59 <#assign journalArticleId = journalArticle.getArticleId()>
60 <#assign document = saxReaderUtil.read(journalArticle.getContent())>
61 <#assign rootElement = document.getRootElement()>
62 <#assign title = "">
63 <#assign titleSel = saxReaderUtil.createXPath("dynamic-element[@name='position']/dynamic-content[@language-id='" + newLocale + "']")>
64 <#assign title = titleSel.selectSingleNode(rootElement).getStringValue()>
65 <#assign numReferencia = "">
66 <#assign numReferenciaSel = saxReaderUtil.createXPath("dynamic-element[@name='reference_number']/dynamic-content[@language-id='" + newLocale + "']")>
67 <#assign numReferencia = numReferenciaSel.selectSingleNode(rootElement).getStringValue()>
68 <#assign referenceSel = saxReaderUtil.createXPath("dynamic-element[@name='reference_text']/dynamic-content[@language-id='" + newLocale + "']")>
69 <#if referenceSel.selectSingleNode(rootElement)?has_content>
70 <#assign reference = referenceSel.selectSingleNode(rootElement).getStringValue()>
71 <#else>
72 <#assign reference = "">
73 </#if>
74 <#assign refNumSel = saxReaderUtil.createXPath("dynamic-element[@name='reference_text']/dynamic-element[@name='reference_number']/dynamic-content[@language-id='" + newLocale + "']")>
75 <#if refNumSel.selectSingleNode(rootElement)?has_content>
76 <#assign refNumber = refNumSel.selectSingleNode(rootElement).getStringValue()>
77 <#else>
78 <#assign refNumber = "">
79 </#if>
80 <#assign sumissionSel = saxReaderUtil.createXPath("dynamic-element[@name='text_submission']/dynamic-content[@language-id='" + newLocale + "']")>
81 <#if sumissionSel.selectSingleNode(rootElement)?has_content>
82 <#assign sumission = sumissionSel.selectSingleNode(rootElement).getStringValue()>
83 <#else>
84 <#assign sumission = "">
85 </#if>
86 <#assign requestDateSel = saxReaderUtil.createXPath("dynamic-element[@name='text_submission']/dynamic-element[@name='request_date']/dynamic-content[@language-id='" + newLocale + "']")>
87 <#if requestDateSel.selectSingleNode(rootElement)?has_content>
88 <#assign requestDate = requestDateSel.selectSingleNode(rootElement).getStringValue()>
89 <#else>
90 <#assign requestDate = "">
91 </#if>
92 <#assign link = renderer.getURLViewInContext(renderRequest, renderResponse, "")>
93 <#assign pubDateSel = saxReaderUtil.createXPath("dynamic-element[@name='pubDate']/dynamic-content[@language-id='" + newLocale + "']")>
94 <#assign dataPub = pubDateSel.selectSingleNode(rootElement).getStringValue()>
95 <#assign expDateSel = saxReaderUtil.createXPath("dynamic-element[@name='expDate']/dynamic-content[@language-id='" + newLocale + "']")>
96 <#assign dataExp = expDateSel.selectSingleNode(rootElement).getStringValue()>
97 <#assign timePubSel = saxReaderUtil.createXPath("dynamic-element[@name='pubTime']/dynamic-content[@language-id='" + newLocale + "']")>
98 <#assign timePub = timePubSel.selectSingleNode(rootElement).getStringValue()>
99 <#assign timeExpSel = saxReaderUtil.createXPath("dynamic-element[@name='expTime']/dynamic-content[@language-id='" + newLocale + "']")>
100 <#assign timeExp = timeExpSel.selectSingleNode(rootElement).getStringValue()>
101
102 <#assign isExpiredSel = saxReaderUtil.createXPath("dynamic-element[@name='isExpired']/dynamic-content[@language-id='" + newLocale + "']")>
103 <#if isExpiredSel.selectSingleNode(rootElement)?has_content>
104 <#assign isExpired = isExpiredSel.selectSingleNode(rootElement).getStringValue()>
105 </#if>
106
107 <#-- Data publicació i expiració -----------------------------------------------
108 -->
109
110 <#if (dataPub?has_content)>
111 <#if timePub?? && timePub?has_content>
112
113 <#if isValidTimeFormat(timePub) && timePub?has_content>
114 <#assign timePubDate = timePub?date["HH:mm"]>
115 <#assign timePubFormat = timePubDate?string["HH:mm"]>
116 <#else>
117 <#-- Si el formato no es válido, asignar un valor predeterminado o manejar el error -->
118 <#assign timePubDate = "">
119 <#assign timePubFormat = "">
120 </#if>
121
122 <#else>
123 <#assign timePubDate = "">
124 <#assign timePubDate = "">
125 </#if>
126 <#attempt>
127 <#assign dataPub = dataPub?date["yyyy-MM-dd"]>
128
129 <#if timePubFormat?has_content && timePubFormat != "">
130 <#assign dataPubMil = miliSeconds(timePubFormat dataPub?long)>
131 <#assign dataPub = dateUtil.newDate(getterUtil.getLong(dataPubMil))>
132 </#if>
133 <#assign dataPubMil = dataPub?long-timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(dataPub?long)>
134 <#recover>
135 </#attempt>
136 </#if>
137
138
139 <#if (dataExp?has_content)>
140
141
142
143 <#if timeExp?? && timeExp?has_content>
144 <#if isValidTimeFormat(timeExp)>
145 <#assign timeExpDate = timeExp?date["HH:mm"]>
146 <#assign timeExpFormat = timeExpDate?string["HH:mm"]>
147 <#else>
148 <#-- Si el formato no es válido, asignar un valor predeterminado o manejar el error -->
149 <#assign timeExpFormat = "">
150 <#assign timeExpDate = "">
151 </#if>
152 <#else>
153 <#assign timeExpDate = "">
154 <#assign timeExpFormat = "">
155 </#if>
156 <#attempt>
157 <#assign dataExp = dataExp?date["yyyy-MM-dd"]>
158
159 <#if timeExpFormat?has_content && timeExpFormat != "">
160 <#assign dataExpMil = miliSeconds(timeExpFormat dataExp?long)>
161 <#assign dataExp = dateUtil.newDate(getterUtil.getLong(dataExpMil))>
162 </#if>
163 <#assign dataExpMil = dataExp?long-timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(dataExp?long)>
164 <#recover>
165 </#attempt>
166 </#if>
167
168
169 <#if dataPub?has_content && dataExp?has_content && (today?long>=dataPubMil) && (today?long>dataExpMil) || getterUtil.getBoolean(isExpired)>
170 <#if title != "">
171 <#assign count = 1>
172
173 <#if locale != "en_US">
174 <li class="list__item oferta-practicas" data-title="${title}" data-fechapub="${dataPubMil}">
175 <a class="list__label" href="${link}">
176 ${numReferencia} - ${title}
177 <#--$dataPub
178 -->
179 </a>
180 <#if reference?has_content>
181 <p>
182 ${reference}: ${refNumber} <#if sumission>- ${sumission}</#if><#if requestDate>: ${requestDate}</#if>
183 </p>
184 </#if>
185 </li>
186 </#if>
187 </#if>
188 </#if>
189 </#if>
190 </#foreach>
191 <#if locale != "en_US">
192 </ul>
193 </#if>
194 <#if locale == "en_US" && count != 0>
195 <div class="content intro">
196
197 <#if (dataExp?has_content)>
198 <#if timeExp?? && timeExp?has_content>
199 <#if isValidTimeFormat(timeExp)>
200 <#assign timeExpDate = timeExp?date["HH:mm"]>
201 <#assign timeExpFormat = timeExpDate?string["HH:mm"]>
202 <#else>
203 <#-- Si el formato no es válido, asignar un valor predeterminado o manejar el error -->
204 <#assign timeExpDate = "">
205 <#assign timeExpFormat = "">
206 </#if>
207 <#else>
208 <#assign timeExpDate = "">
209 <#assign timeExpFormat = "">
210 </#if>
211 <#attempt>
212 <#assign dataExp = dataExp?date["yyyy-MM-dd"]>
213
214 <#if timeExpFormat?has_content && timeExpFormat != "">
215 <#assign dataExpMil = miliSeconds(timeExpFormat dataExp?long)>
216 <#assign dataExp = dateUtil.newDate(getterUtil.getLong(dataExpMil))>
217 </#if>
218 <#assign dataExpMil = dataExp?long-timeZoneUtil.getTimeZone("Europe/Madrid").getOffset(dataExp?long)>
219 <#recover>
220 </#attempt>
221 </#if>
222 <p>
223 <@liferay.language key="offer.studentHistoric.noResStudents"/>
224 </p>
225 </div>
226
227 <#elseif count == 0>
228 <div class="content intro">
229 <p>
230 <@liferay.language key="offer.studentHistoric.noResults"/>
231 </p>
232 </div>
233 </#if>
234<#else>
235 <div class="content intro">
236 <p>
237 <@liferay.language key="offer.studentHistoric.noResults"/>
238 </p>
239 </div>
240</#if>
241
242<div class="content intro no-results" style="display:none;">
243 <p>
244 <@liferay.language key="offer.studentHistoric.noResults.js"/>
245 </p>
246
247</div>
248<script type="text/javascript">
249
250 $(document).ready(function(){
251 historicalStudentOffers.init();
252 });
253
254 historicalStudentOffers= {
255 init: function(){
256 if($("li.oferta-practicas").length==0){
257 return;
258 }
259
260 var maxDate = new Date("3000/06/25");
261 var orderList = $("li.oferta-practicas").sort(function(a,b){
262 var date1 = $(a).data("fechapub")==""?maxDate:new Date($(a).data("fechapub"));
263 var date2 = $(b).data("fechapub")==""?maxDate:new Date($(b).data("fechapub"));
264 //console.log($(a).data("fechapub"));
265 //console.log($(b).data("fechapub"));
266 //console.log(date1 + "----" + date2);
267 return date2 - date1;
268 });
269
270
271 var offers = [];
272 var year = null;
273 jQuery.each(orderList,function(index,li){
274 var date = new Date($(li).data("fechapub"));
275 if(year != date.getFullYear()){
276 year = date.getFullYear();
277 offers.push('<li><h2 class="title title--2" data-year-title="' + year + '">' + year + '</h2></li>');
278 }
279 //$(li).data("year",year);
280 li.dataset.year = year;
281 offers.push(li);
282 });
283
284 $("#historical-students-offers-ul").html(offers);
285
286 $('#oferta-practicas-search-input').keyup(function(event){
287 <#--if(event.which == 13)
288--> <#-- {
289--> event.preventDefault();
290 this.search();
291 <#-- }
292--> }.bind(this));
293 },
294 search: function(){
295 $('.no-results').hide();
296 var text = $("#oferta-practicas-search-input").val();
297 if(text==""){
298 $("[data-year-title]").show();
299 $(".oferta-practicas").show();
300 }else{
301 $("[data-year-title]").hide();
302 var found = false;
303 $(".oferta-practicas").each(function(index,item){
304 var title = $(item).data("title");
305 if(title.toUpperCase().includes(text.toUpperCase())){
306 var year = $(item).data("year");
307 $("[data-year-title='" + year + "']").show();
308 $(item).show();
309 found = true;
310 }else{
311 $(item).hide();
312 }
313 });
314 if(!found){
315 var txt = "<@liferay.language key="offer.studentHistoric.noResults.js"/>";
316 txt = txt.replace("@@@@", text);
317 $('.no-results p').html(txt);
318 $('.no-results').show();
319 }
320 }
321 }
322 };
323
324
325 </script>
Cerrar
© OpenStreetMap contributors






