An error occurred while processing the template.
Java method "com.mecalux.util.service.impl.MlxJournalHelperServiceImpl.getStructureFieldValues(com.liferay.journal.model.JournalArticle, String)" threw an exception when invoked on com.mecalux.util.service.impl.MlxJournalHelperServiceImpl object "com.mecalux.util.service.impl.MlxJournalHelperServiceImpl@168b3332"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign articleValues = mlxJournalHel... [in template "20101#20128#3282457" at line 232, column 33] ----
1<style> /* fix estilos liferay 7.4 automaticos para las imagenes en el contenido del final de la página de ofertas de empleo */
2 .corporate--hhrr--values--item picture{width: 100%;}
3</style>
4
5<#if entries?has_content >
6 <!--MEDIABAR-->
7
8 <span id="offers"></span>
9 <div class="corporate--hhrr--mediabar--container" data-js="slider" data-js-type="tiny-slider" data-js-config="{'container': '.corporate--hhrr--mediabar', 'nav': false, 'controlsText':['',''], 'loop': false, 'mouseDrag': 'true', 'autoWidth': true}">
10 <ul class="corporate--hhrr--mediabar">
11 <#assign departmentVocId = 396098 />
12 <#assign jobVacancyStrId = 466198 />
13 <#assign departmentJobVacanciesMap = mlxAssetHelperService.getVocabularyCategorizedArticlesMap(departmentVocId, groupId, [], themeDisplay.getUserId()) />
14
15 <#assign listCategorySorted = [] />
16 <#list departmentJobVacanciesMap as categoryId, articles >
17 <#assign jobList = (mlxAssetHelperService.getJournalArticleListByStructureIdAndCategoryId(groupId, themeDisplay.getUserId(), jobVacancyStrId, categoryId))![] />
18 <#if jobList?has_content>
19 <#assign department = mlxAssetHelperService.fetchAssetCategory(categoryId).getTitle(locale) />
20 <#assign departmentDescription = mlxAssetHelperService.fetchAssetCategory(categoryId).getDescription(locale) />
21 <#assign listCategorySorted = listCategorySorted + [{"id":categoryId ,"name": department, "description": departmentDescription, "articles": jobList}] />
22 </#if>
23 </#list>
24
25 <#list listCategorySorted?sort_by("name") as listCategory >
26 <li class="corporate--hhrr--mediabar--item" data-name="${listCategory.id}">
27 <a href="#${listCategory.id}" data-track-tab-name="${listCategory.name}" data-href="listCategory" title="${listCategory.name}" class="corporate--hhrr--mediabar--item--link">${listCategory.name}</a>
28 </li>
29 </#list>
30 </ul>
31 </div>
32
33 <script>
34 //intersectionObserver para destacar pestaña según el contenedor que envia el evento
35 window.addEventListener("load", function () {
36 var scrollingClickTab = false;
37
38 var mediabar =
39 mecalux.sliders.items[
40 mecalux.sliders.getSliderIndexByClass(
41 "corporate--hhrr--mediabar"
42 )
43 ];
44 if (typeof mediabar !== "undefined") {
45 var sliderMediabar = mediabar.slider;
46 }
47 if ("IntersectionObserver" in window) {
48 var observerOptions = {
49 root: null,
50 rootMargin: "0px",
51 threshold: 0,
52 };
53
54var sections = Array.from(
55 mecalux.cache.$body.find(".corporate--hhrr--offers--container, .corporate--hhrr--software-offers--container")
56 );
57 var navItems = {};
58
59 var items = Array.from(mecalux.cache.$body.find(".corporate--hhrr--mediabar--item"));
60 items.forEach(function (item) {
61 navItems[item.getAttribute("data-name")] = item;
62 });
63
64 function observerCallback(entries, observer) {
65 entries.forEach(function (entry) {
66 // Si item entra en la vista
67 if (entry.isIntersecting && scrollingClickTab == false) {
68 var navItem = navItems[entry.target.children[0].id];
69
70 if (navItems[entry.target.children[0].id]) {
71 navItem.classList.add("active");
72
73 Object.values(navItems).forEach(function (item) {
74 if (item != navItem) {
75 item.classList.remove("active");
76 }
77 });
78
79 if (typeof sliderMediabar !== "undefined") {
80 sliderMediabar.goTo(
81 entry.target.getAttribute("data-navbar")
82 );
83 }
84 }
85 }
86 });
87 }
88
89 function calculateThreshold(obj) {
90 if (obj.offsetHeight < document.body.offsetHeight) {
91 return 0;
92 } else {
93 return Math.min(
94 document.body.offsetHeight / obj.offsetHeight,
95 0.2
96 );
97 }
98 }
99
100 sections.forEach(function (sec) {
101 var calculatedThreshold = calculateThreshold(sec);
102 observerOptions.threshold = calculatedThreshold;
103 var observer = new IntersectionObserver(
104 observerCallback,
105 observerOptions
106 );
107 observer.observe(sec);
108 });
109 } else {
110 var sections = Array.from(
111 mecalux.cache.$body.find(".corporate--hhrr--offers--container, .corporate--hhrr--software-offers--container")
112 );
113 var stickyHeight = mecalux.cache.$body.find("#stickyHeader").offsetHeight + mecalux.cache.$body.find(".corporate--hhrr--mediabar").offsetHeight;
114 var actualNavSelected = null;
115
116 function navMenuScrollControl() {
117 var mediabar =
118 mecalux.sliders.items[
119 mecalux.sliders.getSliderIndexByClass(
120 "corporate--hhrr--mediabar"
121 )
122 ];
123 if (typeof mediabar !== "undefined") {
124 var sliderMediabar = mediabar.slider;
125 }
126 var scroll = window.pageYOffset + stickyHeight;
127 var navSelected = null;
128 sections.forEach(function (section) {
129 if (section.dataset.navbar) {
130 if (scroll > section.offsetTop - stickyHeight) {
131 navSelected = section.children[0].id;
132 }
133 }
134 });
135
136 if (actualNavSelected != navSelected) {
137 var activeNavItem = document.querySelector(
138 "a[href*='#" + actualNavSelected + "']"
139 );
140 var selectedNavItem = document.querySelector(
141 "a[href*='#" + navSelected + "']"
142 );
143 if (activeNavItem) {
144 activeNavItem.parentElement.classList.remove("active");
145 }
146 if (selectedNavItem) {
147 selectedNavItem.parentElement.classList.add("active");
148 }
149 if (typeof sliderMediabar !== "undefined") {
150 sliderMediabar.goTo(
151 mecalux.cache.$body.find("#" + navSelected)
152 .parentElement.getAttribute("data-navbar")
153 );
154}
155 actualNavSelected = navSelected;
156 }
157 }
158 window.addEventListener(
159 "scroll",
160 mecalux.tools.throttle(navMenuScrollControl, 200)
161 );
162 }
163
164 /* init ajuste clic tabs */
165 if (mecalux.cache.$body) {
166 var mediabarItems = Array.from(mecalux.cache.$body.find(".corporate--hhrr--mediabar--item"));
167 mediabarItems.forEach(function (item) {
168 item.addEventListener("click", function (e) {
169 mediabarItems.forEach(function (navItem) {
170 navItem.classList.remove("active");
171 });
172 e.currentTarget.classList.toggle("active");
173
174 scrollingClickTab = true;
175
176 setTimeout(function(){
177 scrollingClickTab = false;
178 }, 1000);
179 });
180 });
181}
182 /* end ajuste clic tabs */
183
184},
185 false
186);
187 </script>
188
189
190
191 <!--OFERTAS-->
192 <div class="corporate--hhrr--offers">
193
194 <#assign dataNavBar = 0 />
195
196 <#list listCategorySorted?sort_by("name") as listCategory >
197 <#if listCategory.articles?has_content >
198 <#assign jobVacancies = listCategory.articles />
199 <#assign department = listCategory.name />
200 <#assign departmentDescription = listCategory.description />
201
202 <#if listCategory.id == 396131>
203 <#assign softwareClass = "-software" />
204 <div class="corporate--hhrr--software-offers">
205 <div class="corporate--hhrr--software-offers--container" data-navBar="${dataNavBar}">
206 <#else>
207 <#assign softwareClass = "" />
208 <div class="corporate--hhrr--offers--container" data-navBar="${dataNavBar}" data-js="slider" data-js-type="tiny-slider" data-js-config='{"container": ".slider-${listCategory.id}", "loop": false, "navPosition": "bottom", "mouseDrag": "true", "items":1,"gutter":20, "controlsText": ["",""], "responsive": {"600": {"items":1},"750": {"items":2},"1280": {"items":3,"gutter": 30}}}'>
209 </#if>
210 <span id="${listCategory.id}" class="corporate--hhrr--offers--nav-anchor"></span>
211 <div class="corporate--hhrr-${softwareClass!}-offers--row">
212
213 <div class="corporate--hhrr-${softwareClass!}-offers-column" style="flex: 1 1 100%;">
214 <h3 class="corporate--hhrr-${softwareClass!}-offers--title">${department}</h3>
215 <span class="corporate--hhrr-${softwareClass!}-offers--pill">${jobVacancies?size}</span>
216 <p class="corporate--hhrr-${softwareClass!}-offers--subtitle">${departmentDescription}</p>
217 </div>
218
219 <#if listCategory.id == 396131>
220 <#assign softwareVideoMasterId = 6013 />
221 <#assign articleVid = mlxMastersHelperService.getJournalArticleByMasterAndGroup(softwareVideoMasterId, groupId)!{} />
222 <#if articleVid?has_content>
223 <#assign article_content = mlxJournalHelperService.getStructureFieldValue(articleVid,"content","${locale}") />
224 ${article_content}
225 </#if>
226 </#if>
227
228 </div>
229
230 <div class="corporate--hhrr-${softwareClass!}-offers--slider slider-${listCategory.id}">
231 <#list jobVacancies as jobVacancy >
232 <#assign articleValues = mlxJournalHelperService.getStructureFieldValues(jobVacancy,"${locale}") />
233 <#assign name = (articleValues["name"])!"" />
234 <#assign description = (articleValues["short_description"])!""/>
235 <#assign asseturl = mlxUrlUtilService.getUrlByJournalArticle(jobVacancy, "${locale}", groupId)?string />
236 <#assign location = (articleValues["location"])!"" />
237 <article class="corporate--hhrr-${softwareClass!}-offers--item">
238 <div class="corporate--hhrr-${softwareClass!}-offers--item-card">
239 <div class="corporate--hhrr-${softwareClass!}-offers--item-wrapper">
240 <a href="${asseturl}" title="${name} - ${location}" class="corporate--hhrr-${softwareClass!}-offers--item-link">
241 <h4 class="corporate--hhrr-${softwareClass!}-offers--item-heading">${name} - ${location}</h4>
242 </a>
243 <p class="corporate--hhrr-${softwareClass!}-offers--item-description">${description}</p>
244 </div>
245 </div>
246 </article>
247 </#list>
248 </div>
249 <#if listCategory.id == 396131>
250 </div>
251 </#if>
252 </div>
253 <#assign dataNavBar = dataNavBar + 1 />
254 </#if>
255 </#list>
256 </div>
257
258<#else>
259
260 <!--SIN OFERTAS-->
261 <div class="corporate--section">
262 <p class="corporate--content--paragraph"><@corporate.mlxlanguage key="mlx.jobvacancy.no-vacancies" /></p>
263 </div>
264
265</#if>
266
267<#assign jsPath="/o/corporate-theme/js/mecalux/mecalux.rrhh.js" />
268<#assign cdn= mlxUrlUtilService.getCdn(groupId)/>
269<#if ("${cdn!}" == "") >
270 <#assign cdn = "" />
271</#if>
272<#assign jsPath = "${cdn}${jsPath}" />
273
274
275<style> /*FIX POSICIÓN ANCHORS NAVBAR*/
276 .corporate--hhrr--offers--container, .corporate--hhrr--software-offers {
277 position:relative;
278 }
279 .corporate--hhrr--offers--nav-anchor {
280 position:absolute;
281 top:-150px;
282 }
283
284 .corporate--hhrr--offers--container, .corporate--hhrr--software-offers--container { /* MKTG-1073: No permitir tamaños tan pequeños de secciones, causa problemas en intersection observer*/
285 min-height: 575px;
286 }
287
288</style>