Une erreur s'est produite lors du traitement du modèle.
The following has evaluated to null or missing: ==> mlxAssetHelperService.getAssetCategoryByAssetEntryAndVocabularyId(softwareCatEntry, vocabularyId) [in template "20101#20128#SOFTWARE-SOLUTIONS-PRODUCTS-STR-DEFAULT-TEMPLATE" at line 191, column 23] ---- 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 categoryId = mlxAssetHelperSe... [in template "20101#20128#SOFTWARE-SOLUTIONS-PRODUCTS-STR-DEFAULT-TEMPLATE" at line 191, column 1] ----
1<!-- TODO: Inyección de estilos de manera directa por el problema de la carga directa a través de los inputs del contenido web, por ejemplo "Software-solutions-supply-chain-analytics-software"
2-->
3<style>
4 #container #bodyID {
5 margin-left: unset;
6 margin-right: unset;
7 clear: unset;
8 }
9 .corporate--prefooter-v3--newsletter iframe {
10 position: unset;
11 top: unset;
12 left: unset;
13 width: unset;
14 height: unset;
15 }
16</style>
17
18<#assign globalGroupId = mlxConstants.getLongConstant("GroupIds","GLOBAL")/>
19<#assign cdn = (mlxUrlUtilService.getCdn(groupId))!"" />
20
21<#if !heading.getSiblings()?first.getData()?has_content>
22 ${content.getData()}
23<#else>
24
25 <div class="corporate--software-solucion-compleja--introduccion--container">
26 <figure class="corporate--software-solucion-compleja--introduccion--background-figure">
27 ${corporate.img(image.getData(), false, 'data-sticky-background="true"', 'alt="' + title.getData() + '"', 'title="' + title.getData() + '"', 'class="corporate--software-solucion-compleja--introduccion--background-image"')}
28 </figure>
29 <div class="corporate--software-solucion-compleja--introduccion">
30 <h1 data-sticky-title="true" class="corporate--software-solucion-compleja--introduccion--heading">${title.getData()}</h1>
31 <p data-sticky-subheading="true" class="corporate--software-solucion-compleja--introduccion--subheading">${subtitle.getData()}</p>
32 <#if cta_link.getData()?has_content>
33 <a data-track-download-view="true" data-track-download-name="cta-link" data-track-download-type="Download-file" data-track-event-category="CTA_Main" data-track-event-label="EasyBasicDownload" class="corporate--software-solucion-compleja--introduccion--cta" href="${cta_link.getData()}" rel="nofollow">${cta.getData()}</a>
34 <#else>
35 <a data-sticky-cta="true" data-sticky-btn="true" data-group="cta-contact-form" data-track-event-category="CTA_Main" data-track-event-label="GoTo_Contact-Software-Form" class="corporate--software-solucion-compleja--introduccion--cta" href="#contact-name">${cta.getData()}</a>
36 </#if>
37 </div>
38 </div>
39 <#-- DESTACADO GARTNER TEMPORAL: init
40 este trozo de código debería solo estar aqui mientras quieran tener el destacado -->
41
42 <#assign gartnerPage = mlxMastersHelperService.getLayoutByMasterAndGroup(56024, groupId)!"">
43 <#assign bannerGartnerMasterId = 5734 />
44 <#assign bannerArticle = mlxMastersHelperService.getJournalArticleByMasterAndGroup(bannerGartnerMasterId, groupId)!"" />
45 <#if bannerArticle!="">
46 <#assign bannerContent = mlxJournalContentService.getContent(bannerArticle, bannerArticle.getDDMTemplateKey(),"${locale}",themeDisplay,'view') />
47 </#if>
48
49 <#if bannerArticle != "" && gartnerPage != "">
50 ${bannerContent}
51 </#if>
52 <#-- DESTACADO GARTNER TEMPORAL: end -->
53 <main>
54 <#if heading.getSiblings()?has_content>
55 <div class="corporate--section">
56 <#list heading.getSiblings() as item>
57 <#if item.getData()?has_content>
58 <h2 class="corporate--title-h1">${item.getData()}</h2>
59 </#if>
60 <#if item.subtitle_h3.getData()?has_content>
61 <h3 class="corporate--title-h3">${item.subtitle_h3.getData()}</h3>
62 </#if>
63 <#list item.paragraph.getSiblings() as p>
64 <#if p.getData()?has_content>
65 <p class="corporate--paragraph">${p.getData()}</p>
66 </#if>
67 </#list>
68 <#if item.list_item.getData()?has_content>
69 <ul class="corporate--unordered-list">
70 <#list item.list_item.getSiblings() as li >
71 <#if li.getData()?has_content>
72 <li class="corporate--unordered-list--item">${li.getData()}</li>
73 </#if>
74 </#list>
75 </ul>
76 </#if>
77 <#list item.img.getSiblings() as img>
78 <#if img.getData()?has_content>
79 ${corporate.img(img.getData(), false, 'alt=""', 'title=""', 'class="corporate--content-image"')}
80 </#if>
81 </#list>
82 </#list>
83 </div>
84 </#if>
85 </main>
86</#if>
87
88<script> <#--MKTG-881 showVid - Inicializar vídeos Software Solucion Compleja Tiny, habrá que deprecar estos iframes post-migración -->
89function showVid(url, img, waterMark, w, h, divId, autoplay, controls, stretchingType, extension, youtubeEmbeddedCode) {
90
91 if (youtubeEmbeddedCode != null && youtubeEmbeddedCode != "") {
92 var v = document.getElementById(divId);
93 var ap = (autoplay) ? 1 : 0;
94 v.insertAdjacentHTML('beforeend', '<iframe width="' + w + '" height="' + h +
95 '" src="https://www.youtube.com/embed/' + youtubeEmbeddedCode + '?autoplay=' + ap +
96 '&rel=0" frameborder="0" allowfullscreen></iframe>')
97
98 } else {
99 stretchingType = stretchingType != null && stretchingType != '' ? stretchingType : 'uniform';
100 var autoStart = autoplay == true || autoplay == 'true' ? true : false;
101 var canPlay = false;
102 var ext = extension;
103 var justForMobile = false;
104 var v = document.createElement('video');
105 if (url != '' && v.canPlayType) {
106 if ((typeof (ext) == "undefined" || ext == null) && url.indexOf('.') > 0) {
107 var end = url.lastIndexOf('?') > url.lastIndexOf('.') ? url.lastIndexOf('?') : url.length - 1;
108 ext = url.substring(url.lastIndexOf('.') + 1, end);
109 }
110
111 if (ext == 'mp4' && v.canPlayType('video/mp4').replace(/no/, '')) {
112 canPlay = true;
113 } else if (ext == 'webm' && v.canPlayType('video/webm').replace(/no/, '')) {
114 canPlay = true;
115 } else if (ext == 'ogv' && v.canPlayType('video/ogg').replace(/no/, '')) {
116 canPlay = true;
117 }
118 }
119 if (canPlay) {
120 if (mecalux.browser == null || mecalux.browser == undefined || mecalux.browser == {}) {
121 mecalux.browser = {
122 msie: navigator.userAgent.indexOf("MSIE "),
123 chrome: /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()),
124 mobile: /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent
125 .toLowerCase())
126 };
127 }
128 if (w == '100%')
129 w = '287';
130
131 var type = '';
132 if (ext == 'mp4') {
133 type = "video/mp4";
134 } else if (ext == 'webm') {
135 type = "video/flv";
136 } else if (ext == 'ogv') {
137 type = "video/ogg";
138 } else if (ext == 'flv') {
139 type = "video/webm";
140 }
141
142 var element = document.getElementById(divId);
143 element.innerHTML = '';
144 var video = document.createElement('video');
145 //attributes for video tag
146 video.addClass("fancy-video fancy-video-" + stretchingType);
147 video.css('background', '#000');
148 video.attr('controlslist', 'nodownload');
149 video.attr('preload', 'none');
150 video.attr('width', w);
151 video.attr('height', h);
152 video.attr('controls', 'controls');
153
154 //poster
155 var poster = '';
156 if (img != null && img != '' && img != undefined) {
157 poster = img;
158 }
159 video.attr('poster', poster);
160
161 //autoplay
162 if (autoStart) {
163 video.attr('autoplay', 'autoplay');
164 }
165
166 //add video tag to the div
167 video.appendTo('#' + divId);
168
169 //source tag
170 var source = document.createElement('source');
171 source.setAttribute('src', url);
172 source.setAttribute('type', type);
173
174 //add source tag to video tag
175 video[0].appendChild(source);
176
177 var element = document.getElementById(divId);
178 element.style.display = 'block';
179 }
180 }
181}
182</script>
183
184<#assign article = mlxAssetHelperService.fetchLatestApprovedArticle(groupId, .vars["reserved-article-id"].getData()) />
185<#assign articleId = article.getArticleId() />
186<#assign globalGroupId = mlxConstants.getLongConstant("GroupIds","GLOBAL")/>
187
188<!--Get Category-->
189<#assign softwareCatEntry = mlxAssetHelperService.getAssetEntryByJournalArticle(article) />
190<#assign vocabularyId = 396488 />
191<#assign categoryId = mlxAssetHelperService.getAssetCategoryByAssetEntryAndVocabularyId(softwareCatEntry, vocabularyId).categoryId />
192<#assign categorySoftwareModules = 396495 />
193
194<#if (categorySoftwareModules == categoryId)> <!-- MKTG-1439 solamente se muestran los relacionados en SoftwareModules -->
195
196 <!--MKTG-1284 CASOS PRÁCTICOS-->
197
198 <#assign practicalCasesStrKey = "PRACTICAL-CASE-STR" />
199 <#assign practicalCasesRelated = mlxAssetHelperService.getRelatedArticlesByStructure(groupId, articleId, practicalCasesStrKey) />
200
201 <#if practicalCasesRelated?has_content>
202
203 <div class="corporate--software-solucion-compleja--cases">
204 <div class="corporate--software-solucion-compleja--cases--container" data-js="slider" data-js-type="tiny-slider" data-js-config='{"container": ".corporate--software-solucion-compleja--cases--slider", "navPosition": "bottom", "controls": false, "mouseDrag": true}' data-gtm-block-name="Case_Study">
205 <h3 class="corporate--software-solucion-compleja--cases--title"><@corporate.mlxlanguage key="mlx.breadcrumb.practical-cases" /></h3>
206 <div class="corporate--software-solucion-compleja--cases--slider" data-gtm-block-name="Case_Study">
207
208 <#list practicalCasesRelated as practicalCase>
209
210 <#if practicalCase?index < 4>
211
212 <#assign practicalCaseContentValues = (mlxJournalHelperService.getStructureFieldValues(practicalCase, locale))!{} />
213 <#assign practicalCaseName = (practicalCaseContentValues["name"]?string)!"" />
214 <#assign practicalCaseUrl = mlxUrlUtilService.getUrlByJournalArticle(practicalCase, "${locale}", groupId)?string />
215 <#assign practicalCaseName = (practicalCaseContentValues["name"]?string)!"" />
216 <#assign practicalCaseDescription = (practicalCaseContentValues["html_description"]?string)!"" />
217
218 <#assign clientStrKey = "CLIENT-STR" />
219 <#assign practicalCaseClient = (mlxAssetHelperService.getFirstRelatedArticle(groupId, practicalCase.articleId, clientStrKey))!"" />
220
221 <div class="corporate--software-solucion-compleja--cases--item">
222 <div class="corporate--software-solucion-compleja--cases--info">
223
224 <#if practicalCaseClient != "">
225 <#assign practicalCaseClientName = mlxJournalHelperService.getStructureFieldValue(practicalCaseClient, "name", "${locale}")?string />
226 <h3 class="corporate--software-solucion-compleja--cases--item-title">${practicalCaseClientName}</h3>
227 <#else>
228 <#assign practicalCaseClientName = practicalCaseName>
229 </#if>
230
231 <#if practicalCaseName?has_content>
232 <p class="corporate--software-solucion-compleja--cases--item-subtitle">${practicalCaseName}</p>
233 </#if>
234 <#if practicalCaseDescription?has_content>
235 <p class="corporate--software-solucion-compleja--cases--item-description">${practicalCaseDescription?truncate(350, '...')}
236 <a href="${practicalCaseUrl}" title="${practicalCaseClientName}" class="corporate--software-solucion-compleja--cases--item-link"><@corporate.mlxlanguage key="mlx.search.article.readmore" /></a>
237 </p>
238 </#if>
239
240 </div>
241
242 <#assign practicalCaseImageContent = (mlxJournalHelperService.getStructureFieldValue(practicalCase, "list_image", "${locale}"))!{} />
243
244 <#if practicalCaseImageContent?has_content>
245 <#assign practicalCaseImage = jsonFactoryUtil.createJSONObject(practicalCaseImageContent) />
246 <#if practicalCaseImage?has_content>
247
248 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(practicalCaseImage.uuid, globalGroupId) />
249 <#assign practicalCaseImageUrl = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentUrl",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!""/>
250 <#assign practicalCaseImageUrl = mlxUrlUtilService.getLRUrl(fileEntry) />
251
252 <div class="corporate--software-solucion-compleja--cases--thumbnail">
253 <#assign practicalCaseVideoContent = (mlxJournalHelperService.getStructureFieldValue(practicalCase, "video_gallery_fileFieldSet", "${locale}"))![] />
254 <#assign firstPracticalCaseVideoContent = practicalCaseVideoContent?first.video_gallery_file />
255
256 <#if firstPracticalCaseVideoContent?has_content>
257 <#assign practicalCaseVideo = jsonFactoryUtil.createJSONObject(firstPracticalCaseVideoContent) />
258 <#assign practicalCaseVideoUuid = practicalCaseVideo.uui!"" />
259 <#if ("${practicalCaseVideoUuid!}"!="") >
260 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(practicalCaseVideo.uuid, globalGroupId) />
261
262 <#assign videoTitle = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentTitle",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!"" />
263 <#if (videoTitle=="") >
264 <#assign videoTitle = practicalCaseName />
265 </#if>
266
267 <#assign practicalCaseVideoUrl = mlxUrlUtilService.getLRUrl(fileEntry) />
268 <#assign youtubeEmbeddedCode = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxYoutubeEmbeddedCode",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!""/>
269
270 <#if youtubeEmbeddedCode?has_content>
271 <#assign htmlModalAttributes='data-fancybox="video-gallery-${practicalCase?index}" data-type="iframe" data-src="https://www.youtube.com/embed${youtubeEmbeddedCode}" data-caption="${practicalCaseName}"' />
272 <#else>
273 <#assign htmlModalAttributes='data-fancybox="video-gallery-${practicalCase?index}" data-type="html5video" data-src="${practicalCaseVideoUrl}" data-thumb="${practicalCaseImageUrl}" data-caption="${practicalCaseName}"' />
274 </#if>
275
276 <a href="#" class="corporate--software-solucion-compleja--cases--video-container" data-has-modal="true" ${htmlModalAttributes} data-gtm-event="modal" data-gtm-event-label="/Case-study/Video/${videoTitle}">
277 <figure class="corporate--software-solucion-compleja--cases--figure" >
278 <div class="corporate--software-solucion-compleja--cases--container-icon" >
279 ${corporate.img(cdn + '/o/corporate-theme/images/common/th-play2.png', false,'data-role="play-btn" class="corporate--software-solucion-compleja--cases--video-icon" alt="play"')}
280 </div>
281
282 <#if practicalCaseImage.uuid?has_content >
283 <#assign docUrl = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentUrl",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!""/>
284 <#if docUrl == ''>
285 <#assign imgUrl = practicalCaseImageUrl />
286 <#else>
287 <#assign imgUrl = cdn + docUrl + "." + fileEntry.getVersion() + "." + fileEntry.getExtension() />
288 </#if>
289
290 <#assign imgWidth = '640'>
291 <#assign imgTitle = practicalCaseClientName>
292 <#assign imgAlt = practicalCaseClientName>
293 <#assign imgClass = 'corporate--software-solucion-compleja--cases--item-image corporate--software-solucion-compleja--cases--item-image-youtube'>
294 <#assign urlParamConcat = imgUrl?contains("?")?then("&","?")>
295 ${corporate.img(imgUrl + urlParamConcat + 'imwidth=' + imgWidth + '', true,
296 'alt="' + imgAlt + '"', 'title="' + imgTitle + '"', 'class="' + imgClass + '"'
297 'srcset="' + imgUrl + urlParamConcat + 'imwidth=320&imdensity=1 320w,' +
298 imgUrl + urlParamConcat + 'imwidth=640&imdensity=1 640w"')}
299 </#if>
300 </figure>
301 </a>
302 <#else>
303 <figure class="corporate--software-solucion-compleja--cases--figure">
304 <#if practicalCaseImage.uuid?has_content >
305 <#assign docUrl = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentUrl",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!""/>
306 <#if docUrl == ''>
307 <#assign imgUrl = practicalCaseImageUrl />
308 <#else>
309 <#assign imgUrl = cdn + docUrl + "." + fileEntry.getVersion() + "." + fileEntry.getExtension() />
310 </#if>
311
312 <#assign imgWidth = '640'>
313 <#assign imgTitle = practicalCaseClientName>
314 <#assign imgAlt = practicalCaseClientName>
315 <#assign imgClass = 'corporate--software-solucion-compleja--cases--item-image'>
316 <#assign urlParamConcat = imgUrl?contains("?")?then("&","?")>
317 ${corporate.img(imgUrl + urlParamConcat + 'imwidth=' + imgWidth + '', true,
318 'alt="' + imgAlt + '"', 'title="' + imgTitle + '"', 'class="' + imgClass + '"'
319 'srcset="' + imgUrl + urlParamConcat + 'imwidth=320&imdensity=1 320w,' +
320 imgUrl + urlParamConcat + 'imwidth=640&imdensity=1 640w"')}
321 </#if>
322 </figure>
323 </#if>
324 <#else>
325 <figure class="corporate--software-solucion-compleja--cases--figure">
326 <#if practicalCaseImage.uuid?has_content >
327 <#assign docUrl = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentUrl",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!""/>
328 <#if docUrl == ''>
329 <#assign imgUrl = practicalCaseImageUrl />
330 <#else>
331 <#assign imgUrl = cdn + docUrl + "." + fileEntry.getVersion() + "." + fileEntry.getExtension() />
332 </#if>
333
334 <#assign imgWidth = '640'>
335 <#assign imgTitle = practicalCaseClientName>
336 <#assign imgAlt = practicalCaseClientName>
337 <#assign imgClass = 'corporate--software-solucion-compleja--cases--item-image'>
338 <#assign urlParamConcat = imgUrl?contains("?")?then("&","?")>
339 ${corporate.img(imgUrl + urlParamConcat + 'imwidth=' + imgWidth + '', true,
340 'alt="' + imgAlt + '"', 'title="' + imgTitle + '"', 'class="' + imgClass + '"'
341 'srcset="' + imgUrl + urlParamConcat + 'imwidth=320&imdensity=1 320w,' +
342 imgUrl + urlParamConcat + 'imwidth=640&imdensity=1 640w"')}
343 </#if>
344 </figure>
345
346 </#if>
347
348 </div>
349
350 </#if>
351
352 </#if>
353
354
355 </div>
356
357 </#if>
358
359 </#list>
360
361 </div>
362
363
364 <!-- init -->
365 <#assign pcasesMasterId=56006 /> <#--referencias -->
366 <#assign pcasesLayout=(mlxMastersHelperService.getLayoutByMasterAndGroup(pcasesMasterId,scopeGroupId)!"") />
367<#if pcasesLayout == "" >
368 <#assign pcasesMasterId=640015 /> <#--cps -->
369 <#assign pcasesLayout=(mlxMastersHelperService.getLayoutByMasterAndGroup(pcasesMasterId,scopeGroupId)!"") />
370 </#if>
371 <#if pcasesLayout != "" >
372 <#assign pcasesUrl = pcasesLayout.getFriendlyURL() />
373 <a href="${pcasesUrl}" title='<@corporate.mlxlanguage key="mlx.practical-case.show-more" />' class="corporate--software-solucion-compleja--cases--viewmore"><@corporate.mlxlanguage key="mlx.practical-case.show-more" /></a>
374</#if>
375 <!-- end -->
376
377
378 </div>
379 </div>
380
381 </#if>
382
383
384
385 <!--MKTG-1284 QUIZAS TAMBIÉN LE INTERESE--->
386
387 <#-- Article ARTICLE-STR, Blog BLOG-POST-STR, ManualArticle MANUAL-DE-ALMACENAJE-STR, Manual Category CATEGORIA-DE-MANUAL-DE-ALMACENAJE-STR, Video VIDEO-STR, Link Module LINK-MODULE-STR -->
388 <#assign otherArticleKeyList = ["ARTICLE-STR","BLOG-POST-STR","MANUAL-DE-ALMACENAJE-STR","CATEGORIA-DE-MANUAL-DE-ALMACENAJE-STR","VIDEO-STR", "LINK-MODULE-STR"] />
389 <#assign currentOtherArticleRelatedLinks = (mlxAssetHelperService.getRelatedArticlesByStructure(groupId, articleId, otherArticleKeyList))![] />
390
391 <#if currentOtherArticleRelatedLinks?has_content >
392 <div class="corporate--software-solucion-compleja--related-others">
393 <div class="corporate--software-solucion-compleja--related-others--container" data-js="slider" data-js-type="tiny-slider" data-js-config="{'container': '.corporate--software-solucion-compleja--related-others--slider', 'loop':false, 'navPosition': 'bottom', 'mouseDrag': 'true', 'items':1,'gutter':20, 'controlsText': ['',''], 'responsive': {'600': {'items':1},'750': {'items':2},'1280': {'items':3,'gutter': 30}}}" data-gtm-block-name="Your_Interest">
394 <#-- quitamos de forma temporal esta key y usamos la misma de de producto (Mª del mar) => h3 class="corporate--software-solucion-compleja--related-others--title"><@corporate.mlxlanguage key="mlx.software.relateds.product.title"/></h3-->
395 <h3 class="corporate--software-solucion-compleja--related-others--title"><@corporate.mlxlanguage key="mlx.related.alsointerested"/></h3>
396
397 <#-- CONST ids de structura, para poder saber que contenido nos llega -->
398 <#assign articuloStrKey = "ARTICLE-STR" />
399 <#assign manualArticleStrKey = "MANUAL-DE-ALMACENAJE-STR" />
400 <#assign manualCategoryStrKey = "CATEGORIA-DE-MANUAL-DE-ALMACENAJE-STR" />
401 <#assign videoStrKey = "VIDEO-STR" />
402 <#assign blogStrKey = "BLOG-POST-STR" />
403 <#assign linkModuleStrKey = "LINK-MODULE-STR" />
404 <#-- ====> segun estructura -->
405
406 <#assign filtersMap={} />
407 <#assign filtersLinkModuleNames=[] />
408
409 <#list currentOtherArticleRelatedLinks as journalArticle >
410
411
412 <#if journalArticle?index < 6>
413
414 <#assign currStr = journalArticle.getDDMStructure().getStructureKey() />
415
416 <#if ( currStr == articuloStrKey ) >
417 <#assign ribbonText><@corporate.mlxlanguage key='mlx.search.news' /></#assign>
418 <#if !filtersMap[currStr]?? >
419 <#assign filtersMap=filtersMap + {currStr : [ribbonText]} />
420 </#if>
421 <#elseif ( currStr == manualArticleStrKey ) >
422 <#assign ribbonText><@corporate.mlxlanguage key='mlx.software.content.type.articles' /></#assign> <#-- No hay key de languange para manual -->
423 <#if !filtersMap[currStr]?? >
424 <#assign filtersMap=filtersMap + {currStr : [ribbonText]} />
425 </#if>
426 <#elseif ( currStr == manualCategoryStrKey ) >
427 <#assign ribbonText><@corporate.mlxlanguage key='mlx.software.content.type.articles' /></#assign> <#-- No hay key de languange para manual -->
428 <#if !filtersMap[currStr]?? >
429 <#assign filtersMap=filtersMap + {currStr : [ribbonText]} />
430 </#if>
431 <#elseif ( currStr == blogStrKey ) >
432 <#assign ribbonText><@corporate.mlxlanguage key='mlx.search.blog' /></#assign>
433 <#if !filtersMap[currStr]?? >
434 <#assign filtersMap=filtersMap + {currStr : [ribbonText]} />
435 </#if>
436 <#elseif ( currStr == videoStrKey ) >
437 <#assign ribbonText><@corporate.mlxlanguage key='mlx.software.resources.videos.title' /></#assign>
438 <#if !filtersMap[currStr]?? >
439 <#assign filtersMap=filtersMap + {currStr : [ribbonText]} />
440 </#if>
441 <#elseif ( currStr == linkModuleStrKey ) >
442 <#assign ribbonText = mlxJournalHelperService.getStructureFieldValue(journalArticle,"link_type_title",locale) />
443 <#if !filtersMap[currStr]?? >
444 <#assign ribbonArray = [ribbonText] />
445 <#assign filtersLinkModuleNames = filtersLinkModuleNames + ribbonArray />
446 <#assign filtersMap=filtersMap + {currStr : filtersLinkModuleNames} />
447 <#else>
448 <#if (!filtersMap[currStr]?seq_contains(ribbonText)) >
449 <#assign ribbonArray = [ribbonText] />
450 <#assign filtersLinkModuleNames = filtersLinkModuleNames + ribbonArray />
451 <#assign filtersMap=filtersMap + {currStr : filtersLinkModuleNames} />
452 </#if>
453 </#if>
454 </#if>
455
456 </#if>
457
458 </#list>
459
460 <#if (filtersMap?size > 1) >
461
462 <div class="corporate--software-solucion-compleja--related-others--filters">
463 <button class="corporate--software-solucion-compleja--related-others--chip" data-js-filter="all" data-gtm-block-name="Your-Interest" data-gtm-event="clickfilter" data-gtm-event-label='All'><@corporate.mlxlanguage key="mlx.theme.all" /></button> <#-- Todos -->
464
465 <#list filtersMap as key, filterArrayNames >
466 <#list filterArrayNames as filterValue >
467 <#assign gtmTextFormat = filterValue?replace(" ", "-") />
468 <button class="corporate--software-solucion-compleja--related-others--chip" data-js-filter='${filterValue?replace(" ", "-")}' data-gtm-block-name="Your_Interest" data-gtm-event="clickfilter" data-gtm-event-label='${gtmTextFormat}'>${filterValue}</button>
469 </#list>
470 </#list>
471
472 </div>
473
474 </#if>
475
476 <div class="corporate--software-solucion-compleja--related-others--slider" data-gtm-block-name="Your_Interest">
477
478 <#list currentOtherArticleRelatedLinks as journalArticle >
479
480 <#if journalArticle?index < 8>
481
482 <#assign currStr = journalArticle.getDDMStructure().getStructureKey() >
483
484 <#assign assetUrl = mlxUrlUtilService.getUrlByJournalArticle(journalArticle,locale, groupId)?string />
485
486 <#assign journalArticleValues = (mlxJournalHelperService.getStructureFieldValues(journalArticle, locale))!"" />
487
488 <#assign magazineTitle = (journalArticleValues["name"])!"" />
489 <#assign magazineDescription = (journalArticleValues["description"])!"" />
490 <#assign magazineImage = (journalArticleValues["list_image"])!"" />
491
492 <#if ( currStr == articuloStrKey ) >
493 <#assign ribbonText><@corporate.mlxlanguage key='mlx.search.news' /></#assign>
494 <#assign magazineTitle = (journalArticleValues["article_name"])!"" />
495 <#assign magazineImage = (journalArticleValues["image_list"])!"" />
496 <#assign magazineDescription = (journalArticleValues["magazine_title"])!"" />
497 <#if magazineDescription?has_content >
498 <#assign magazineDescription = (journalArticleValues["description"])!"" />
499 </#if>
500 <#elseif ( currStr == manualArticleStrKey ) >
501 <#assign ribbonText><@corporate.mlxlanguage key='mlx.software.content.type.articles' /></#assign> <#-- No hay key de languange para manual -->
502 <#assign magazineImage = (journalArticleValues["image_list"])!"" />
503 <#elseif ( currStr == manualCategoryStrKey ) >
504 <#assign ribbonText><@corporate.mlxlanguage key='mlx.software.content.type.articles' /></#assign> <#-- No hay key de languange para manual -->
505 <#assign magazineImage = (journalArticleValues["social_networks_image"])!"" />
506 <#assign magazineDescription = (journalArticleValues["text"])!"" />
507 <#elseif ( currStr == blogStrKey ) >
508 <#assign ribbonText><@corporate.mlxlanguage key='mlx.search.blog' /></#assign>
509 <#assign magazineDescription = (journalArticleValues["list_summary"])!"" />
510 <#elseif ( currStr == videoStrKey ) >
511 <#assign ribbonText><@corporate.mlxlanguage key='mlx.software.resources.videos.title' /></#assign>
512
513 <#assign video = (journalArticleValues["video"])!"" />
514 <#assign videoField = jsonFactoryUtil.createJSONObject(video) />
515 <#assign videoUuid = videoField.uuid />
516 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(videoUuid,globalGroupId) />
517 <#assign magazineImage = mlxDLFileEntryHelperService.getDLFileEntryMlxFieldValuePersisted("thumbnail", fileEntry.getFileEntryId())!"" />
518 <#if magazineImage == "" >
519 <#assign magazineImage = mlxDLFileEntryHelperService.getDLFileEntryMlxFieldValuePersisted("background", fileEntry.getFileEntryId()) />
520 </#if>
521
522 <#elseif ( currStr == linkModuleStrKey ) >
523 <#assign ribbonText = (journalArticleValues["link_type_title"])!"" />
524 <#assign assetUrl = (journalArticleValues["link_automatic"])!"" />
525 <#if !assetUrl?has_content >
526 <#assign assetUrl = (journalArticleValues["link_manual"])!"" />
527 <#else>
528 <#-- split the string to just get the page layout id , groupID and if its a private layout -->
529 <#assign linkPageObj = jsonFactoryUtil.createJSONObject(assetUrl) />
530 <#assign linkPageId = getterUtil.getLong(linkPageObj.layoutId) />
531 <#assign linkGroupId = getterUtil.getLong(linkPageObj.groupId) />
532 <#assign linkPrivate = linkPageObj.privateLayout />
533
534 <#-- get Friendly URL -->
535 <#assign assetUrl = mlxUrlUtilService.getUrlByLayoutId(linkGroupId, linkPageId, linkPrivate, locale) />
536 </#if>
537
538 <#assign newTab = (journalArticleValues["target"])!false />
539 <#assign targetAttr = "" />
540 <#if newTab >
541 <#assign targetAttr = 'target="_blank"' />
542 </#if>
543 </#if>
544
545 <#if !magazineImage?has_content >
546 <#assign magazineImage = "/documents/20128/455220/article-generic.jpg/90759464-6e87-2453-9b8f-bf012535f258" /> <#-- Imagen default en caso de artículos antiguos sin imagen -->
547 <#else>
548 <#assign articleImage = jsonFactoryUtil.createJSONObject(magazineImage) />
549 <#assign magazineImage = mlxDocumentsHelperService.getDocumentUrlFromUUID(articleImage.uuid, locale) />
550 </#if>
551
552 <div class="corporate--software-solucion-compleja--related-others--item" data-js-filter-values='${ribbonText?replace(" ", "-")}'>
553 <div class="corporate--software-solucion-compleja--related-others--item-card">
554 <#assign mlxPageInfo= mlxPageInfoService.getPageInfoByUrl(assetUrl, scopeGroupId, locale)!"" />
555 <#assign pageView = mlxPageInfo?has_content?then(mlxPageInfo.getPageView(), "") />
556 <#assign pagePath = "/" + pageView?replace("_","/") />
557 <a href="${assetUrl}" title="${magazineTitle}" class="corporate--software-solucion-compleja--related-others--item-link" ${targetAttr!} data-gtm-event="click" data-gtm-event-label='${journalArticle?counter}_${pagePath}' data-gtm-event-click-category='[pageMaster]_Your_Interest' >
558 <figure class="corporate--software-solucion-compleja--related-others--item-figure">
559 <#if magazineImage?has_content >
560 <#if (magazineImage?index_of('?') >= 0) >
561 <#assign lazyImage = magazineImage + "&imageThumbnail=1" />
562 <#assign magazineImage = magazineImage + "&imageThumbnail=2" />
563 <#else>
564 <#assign lazyImage = magazineImage + "?imageThumbnail=1" />
565 <#assign magazineImage = magazineImage + "?imageThumbnail=2" />
566 </#if>
567 </#if>
568 ${corporate.img(cdn + magazineImage, true, 'alt="' + magazineTitle + '"', 'title="' + magazineTitle + '"', 'class="corporate--software-solucion-compleja--related-others--item-image lazyload"')}
569 </figure>
570 <div class="corporate--software-solucion-compleja--related-others--item-wrapper">
571 <span class="corporate--software-solucion-compleja--related-others--item-upperheading">${ribbonText}</span>
572 <h4 class="corporate--software-solucion-compleja--related-others--item-heading">${magazineTitle}</h4>
573 </div>
574 </a>
575 </div>
576 </div>
577
578 <#assign magazineTitle = "" />
579 <#assign magazineDescription = "" />
580 <#assign magazineImage = "" />
581 <#assign lazyImage = "" />
582 <#assign assetUrl = "" />
583 <#assign ribbonText = "" />
584 <#assign target = "" />
585
586 </#if>
587
588 </#list>
589 </div>
590 </div>
591 </div>
592 </#if>
593
594
595 <!--MKTG-1284 CATALOGS--->
596
597 <#assign scopeId = themeDisplay.getScopeGroupId() />
598 <#assign article = mlxAssetHelperService.fetchLatestApprovedArticle(scopeId, articleId) />
599 <#assign entry = mlxAssetHelperService.getAssetEntryByJournalArticle(article) />
600
601 <#assign relatedMlxCatalogues = mlxAssetHelperService.getRelatedAssetEntriesByAssetEntryAndDocumentTypeIds(entry, 398591) /> <!--398591 TypeID Catalogue-->
602
603
604
605 <#if relatedMlxCatalogues?has_content>
606
607 <div class="corporate--software-solucion-compleja--downloads">
608 <div class="corporate--software-solucion-compleja--downloads--container">
609 <h3 class="corporate--software-solucion-compleja--downloads--title"><@corporate.mlxlanguage key="mlx.software.resources.catalogs.title" /></h3>
610
611 <div class="corporate--software-solucion-compleja--downloads--row">
612
613 <#list relatedMlxCatalogues as catalog>
614
615 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(catalog.getClassUuid(),globalGroupId) />
616 <#assign catalogueTitle = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentTitle",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!"" />
617 <#if (catalogueTitle=="") >
618 <#assign catalogueTitle=catalog.getTitle() />
619 </#if>
620 <#assign catalogueDescription = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentDescription",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!"" />
621 <#if (catalogueDescription=="") >
622 <#assign catalogueDescription=catalog.getDescription() />
623 </#if>
624
625 <#assign thumbnailUuid = "" />
626 <#assign thumbnail = "" />
627 <#assign thumbnailField = (mlxDLFileEntryHelperService.getDLFileEntryMlxFieldValuePersisted("thumbnail", fileEntry.getFileEntryId())) />
628 <#if thumbnailField?has_content >
629 <#assign thumbnailField = jsonFactoryUtil.createJSONObject(thumbnailField) />
630 <#assign thumbnailUuid = thumbnailField.uuid />
631 <#if ("${thumbnailUuid!}"!="") >
632 <#assign thumbnailFileEntry = (mlxDLFileEntryHelperService.getDLFileEntry(thumbnailUuid, globalGroupId))!{} />
633 <#if thumbnailFileEntry?has_content >
634 <#assign thumbnail = (mlxUrlUtilService.getLRUrl(thumbnailFileEntry))!"" />
635 </#if>
636 </#if>
637 </#if>
638
639 <#assign downloadLink = mlxUrlUtilService.getLRUrl(fileEntry) />
640
641 <div class="corporate--software-solucion-compleja--downloads--item">
642 <div class="corporate--software-solucion-compleja--downloads--item-card">
643 <figure class="corporate--software-solucion-compleja--downloads--item-figure">
644 ${corporate.img(thumbnail, true, 'alt="' + catalogueTitle + '"', 'title="' + catalogueTitle + '"', 'class="corporate--software-solucion-compleja--downloads--item-image"')}
645 </figure>
646 <div class="corporate--software-solucion-compleja--downloads--item-wrapper">
647 <#if catalogueTitle?has_content >
648 <h3 class="corporate--software-solucion-compleja--downloads--item-heading">${catalogueTitle}</h3>
649 </#if>
650 <#if catalogueDescription?has_content >
651 <p class="corporate--software-solucion-compleja--downloads--item-description">${catalogueDescription}</p>
652 </#if>
653 <a
654 href="${downloadLink}"
655 title="${catalogueTitle}"
656 target="_blank"
657 class="corporate--software-solucion-compleja--downloads--item-button-download"
658 data-track-download-view="true"
659 data-track-download-name="${catalogueTitle}"
660 data-gtm-event="download"
661 data-gtm-event-label="${catalogueTitle}"
662 data-gtm-event-click-category="Download">
663 <@corporate.mlxlanguage key="mlx.theme.download" />
664 </a>
665 </div>
666 </div>
667 </div>
668
669 </#list>
670
671 </div>
672
673 </div>
674 </div>
675
676 </#if>
677
678</#if>
679
680<script>
681/* FIX contenidos con CTA contacto fijo */
682window.addEventListener('load', function(){
683mecalux.cache.body.querySelector("a[href='#']").setAttribute("onclick","")
684mecalux.cache.body.querySelector("a[href='#']").setAttribute("href","#contact-name")
685}, false);
686
687</script>