INTELIGENTNÍ ŘEŠENÍ SKLADOVÁNÍ
Zefektivněte svůj sklad díky inteligentní správě prostoru
Mecalux: zkušenosti a inovace pro Váš sklad
Mecalux je jednou z předních společností v oblasti intralogistických technologií na světě. Je lídrem v oblasti automatizace skladů a vývoje softwaru. Její kovové regály jsou také synonymem kvality v průmyslu.
Můžeme se opřít o 55 let zkušeností, rozhodný závazek k inovacím a především o spokojenost našich zákazníků. Ať už podnikáte v čemkoli, máme pro Vás řešení Vašeho skladování.
DOPORUČENÝ VÝROBEK
PALLET SHUTTLE
Zvyšte produktivitu zvýšením toku vstupů a výstupů zboží
Tím, že se zamezí zasunování vozíku do regálů, ušetří se místo do hloubky, sníží se riziko nehod a zefektivní se provoz skladu.
MECALUX V ČÍSLECH
-
55 let
zkušeností
-
+70 zemí
s obchodní sítí
-
11 výrobních
center
-
7 výzkumná a vývojová centra
pro technologický rozvoj
Při zpracování šablony došlo k chybě.
Java method "com.mecalux.util.service.impl.MlxUrlUtilServiceImpl.getUrlByJournalArticle(com.liferay.journal.model.JournalArticle, String, long)" threw an exception when invoked on com.mecalux.util.service.impl.MlxUrlUtilServiceImpl object "com.mecalux.util.service.impl.MlxUrlUtilServiceImpl@5e82eb0d"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign articleUrl = mlxUrlUtilServic... [in template "20101#20128#3282448" at line 66, column 21] ----
1<#--MKTG-1196: US Date format -->
2<#if mlxConstants?has_content>
3 <#assign domain = themeDisplay.getPortalDomain() />
4 <#assign dateFormat = "dd MMM yyyy"/>
5 <#if (domain?contains("us")) || (domain?contains("interlake")) >
6 <#assign dateFormat = "MMMMMMMMM d, yyyy" />
7 </#if>
8 <#if entries?has_content>
9 <#assign globalGroupId = mlxConstants.getLongConstant("GroupIds","GLOBAL")/>
10 <#assign cdn = (mlxUrlUtilService.getCdn(groupId))!"" />
11
12 <div class="corporate--v3--slider--v2" data-gtm-block-name="News">
13 <div class="corporate--v3--slider--v2--container">
14 <#assign insightsMasterId = 58007 />
15 <#assign insights = (mlxMastersHelperService.getLayoutByMasterAndGroup(insightsMasterId, groupId))!{} />
16 <#assign insightsName = (insights.getName())!"" />
17 <#assign insightsUrl = (insights.getFriendlyURL())!"" />
18 <h2 class="corporate--v3--slider--v2--title">${insightsName}</h2>
19 <a href="${insightsUrl}" title='<@corporate.mlxlanguage key="mlx.newsv3.go-to-news" />' class="corporate--v3--slider--v2--viewmore"><@corporate.mlxlanguage key="mlx.newsv3.go-to-news" /></a>
20 </div>
21 <div class="corporate--v3--slider--v2--slider" data-gtm-block-name="News" data-js="slider" data-js-type="tiny-slider" data-js-config='{"container": ".corporate--v3--slider--v2--slider", "navPosition": "bottom", "mouseDrag": true, "loop": false, "gutter": 10, "edgePadding": 40, "controls": false, "fixedWidth": 250}'>
22 <#list entries as entry>
23
24 <#--StrKeys-->
25 <#assign practicalCaseStrKey = "PRACTICAL-CASE-STR" />
26 <#assign articleStrKey = "ARTICLE-STR" />
27 <#assign manualStrKey = "MANUAL-DE-ALMACENAJE-STR" />
28 <#assign videoStrKey = "VIDEO-STR" />
29 <#assign blogStrKey = "BLOG-POST-STR" />
30 <#assign interviewStrKey = "INTERVIEW-STR" />
31
32
33 <#assign article = mlxAssetHelperService.getJournalArticleByEntry(entry) />
34 <#assign articleValues = mlxJournalHelperService.getStructureFieldValues(article, "${locale}") />
35 <#assign articleName = (articleValues["name"]?string)!"" />
36 <#assign articleImageContent = (articleValues["image_list"])!{} />
37
38 <#assign currStr = article.getDDMStructure().getStructureKey() />
39 <#if currStr == practicalCaseStrKey>
40 <#assign ribbonText><@corporate.mlxlanguage key='mlx.search.pcases' /></#assign>
41 <#assign articleImageContent = (articleValues.list_imageFieldSet["list_image"])!{} />
42 <#elseif currStr == articleStrKey>
43 <#assign ribbonText><@corporate.mlxlanguage key='mlx.search.news' /></#assign>
44 <#assign articleName = (articleValues["article_name"]?string)!"" />
45 <#elseif currStr == manualStrKey>
46 <#assign ribbonText><@corporate.mlxlanguage key='mlx.software.content.type.articles' /></#assign>
47 <#elseif currStr == videoStrKey>
48 <#assign ribbonText><@corporate.mlxlanguage key='mlx.software.resources.videos.title' /></#assign>
49 <#assign videoFieldContent = (articleValues["video"])!{} />
50
51 <#if videoFieldContent?has_content>
52 <#assign videoFieldUuid = jsonFactoryUtil.createJSONObject(videoFieldContent).getString("uuid") />
53 <#assign videoFileEntry = mlxDLFileEntryHelperService.getDLFileEntry(videoFieldUuid, globalGroupId) />
54 <#assign articleImageContent = (mlxDLFileEntryHelperService.getDLFileEntryMlxFieldValuePersisted("background", videoFileEntry.getFileEntryId()))!"" />
55 </#if>
56
57 <#elseif currStr == blogStrKey>
58 <#assign ribbonText><@corporate.mlxlanguage key='mlx.search.blog' /></#assign>
59 <#assign articleImageContent = (articleValues["list_image"])!{} />
60 <#elseif currStr == interviewStrKey>
61 <#assign ribbonText><@corporate.mlxlanguage key='mlx.interviews.title' /></#assign>
62 <#assign articleImageContent = (articleValues.hero["hero_image"]?eval)!{} />
63 <#assign articleName = (articleValues.hero["hero_title"]?string)!"" />
64 </#if>
65
66 <#assign articleUrl = mlxUrlUtilService.getUrlByJournalArticle(article, "${locale}", groupId)?string />
67
68 <#if articleImageContent?has_content>
69 <#assign articleImage = jsonFactoryUtil.createJSONObject(articleImageContent) />
70 </#if>
71
72 <#assign article = mlxAssetHelperService.getJournalArticleByEntry(entry) />
73
74 <#assign articleDate = dateUtil.getDate(article.getDisplayDate(), dateFormat, locale) />
75
76 <#if articleImage?has_content>
77 <div class="corporate--v3--slider--v2--item">
78 <a href="${articleUrl}" title="${articleName}" class="corporate--v3--slider--v2--item-link-box">
79 <#assign articleImageUrl = mlxDocumentsHelperService.getDocumentUrlFromUUID(articleImage.uuid, locale)!"" />
80
81 <#if articleImage.uuid?has_content >
82 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(articleImage.uuid, globalGroupId) />
83 <#assign docUrl = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentUrl",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!""/>
84 <#if docUrl == ''>
85 <#assign imgUrl = cdn + articleImageUrl />
86 <#else>
87 <#assign imgUrl = cdn + docUrl + "." + fileEntry.getVersion() + "." + fileEntry.getExtension() />
88 </#if>
89
90 <#assign imgWidth = '320'>
91 <#assign imgTitle = articleName>
92 <#assign imgAlt = articleName>
93 <#assign imgClass = 'corporate--v3--slider--v2--item-image'>
94 <#assign urlParamConcat = imgUrl?contains("?")?then("&","?")>
95 ${corporate.img(imgUrl + urlParamConcat + 'imwidth=' + imgWidth + '', true,
96 'alt="' + imgAlt + '"', 'title="' + imgTitle + '"', 'class="' + imgClass + '"')}
97 <span class="corporate--v3--slider--v2--item-upper-heading">${ribbonText}</span>
98 <span class="corporate--v3--slider--v2--item-date">${articleDate}</span>
99 <p class="corporate--v3--slider--v2--item-description">${articleName}</p>
100 <span class="corporate--v3--slider--v2--item-link"><@corporate.mlxlanguage key="mlx.newsv3.read" /></span>
101 </#if>
102 </a>
103 </div>
104 </#if>
105
106 </#list>
107 </div>
108 </div>
109
110 </#if>
111</#if>
Při zpracování šablony došlo k chybě.
Java method "com.mecalux.documenturls.service.impl.MlxDocumentsHelperServiceImpl.getDocumentUrlFromUUID(String, String)" threw an exception when invoked on com.mecalux.documenturls.service.impl.MlxDocumentsHelperServiceImpl object "com.mecalux.documenturls.service.impl.MlxDocumentsHelperServiceImpl@6f5a9de7"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign clientLogoUrl = mlxDocumentsH... [in template "20101#20128#3282442" at line 24, column 49] ----
1<#if mlxUrlUtilService?has_content>
2 <#if entries?has_content>
3
4 <#assign cdn = (mlxUrlUtilService.getCdn(groupId))!"" />
5 <#assign globalGroupId = mlxConstants.getLongConstant("GroupIds","GLOBAL")/>
6
7 <div class="corporate--v3--slider--v4" data-gtm-block-name="Logos">
8 <div class="corporate--v3--slider--v4--container">
9 <h2 class="corporate--v3--slider--v4--title"><@corporate.mlxlanguage key="mlx.client.list.some-clients" /></h2>
10 <div class="corporate--v3--slider--v4--slider" data-js="slider" data-js-type="tiny-slider" data-js-config='{"container": ".corporate--v3--slider--v4--slider", "navPosition": "bottom", "mouseDrag": true, "loop": true, "autoplay": true, "autoplayButtonOutput": false, "gutter": 75, "edgePadding": 50, "responsive": {"0": {"items": 1}, "400": { "items": 2}, "768": { "items": 3}, "1200": { "items": 4}}, "controlsText" :["",""]}'>
11
12 <#list entries as curEntry>
13 <#assign client = mlxAssetHelperService.getJournalArticleByEntry(curEntry) />
14 <#assign clientName = (mlxJournalHelperService.getStructureFieldValue(client, "name", "${locale}")?string)!"" />
15 <#assign clientLogoContent = (mlxJournalHelperService.getStructureFieldValue(client, "logo", "${locale}"))!"{}" />
16
17 <#if clientLogoContent?has_content>
18 <#assign clientLogo = jsonFactoryUtil.createJSONObject(clientLogoContent) />
19 </#if>
20
21 <#if clientLogo?has_content>
22 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(clientLogo.uuid, globalGroupId) />
23 <#assign clientLogoAlt = mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentTitle",fileEntry.getFileVersion().getFileVersionId()).getString(locale)!""/>
24 <#assign clientLogoUrl = mlxDocumentsHelperService.getDocumentUrlFromUUID(clientLogo.uuid, "${locale}") />
25
26 <#if clientLogoAlt == "">
27 <#assign clientLogoAlt = clientName />
28 </#if>
29
30 <div class="item">
31
32 <#if clientLogo.uuid?has_content >
33 <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(clientLogo.uuid, globalGroupId) />
34 <#assign docUrl = (mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentUrl",fileEntry.getFileVersion().getFileVersionId()).getString(locale))!""/>
35 <#if docUrl == ''>
36 <#assign imgUrl = cdn + clientLogoUrl />
37 <#else>
38 <#assign imgUrl = cdn + docUrl + "." + fileEntry.getVersion() + "." + fileEntry.getExtension() />
39 </#if>
40
41 <#assign imgWidth = '320'>
42 <#assign imgTitle = clientLogoAlt>
43 <#assign imgAlt = clientLogoAlt>
44 <#assign imgClass = 'lazyload'>
45 <#assign urlParamConcat = imgUrl?contains("?")?then("&","?")>
46 ${corporate.img(imgUrl + urlParamConcat + 'imwidth=' + imgWidth + '', true,
47 'alt="' + imgAlt + '"', 'title="' + imgTitle + '"', 'class="' + imgClass + '"')}
48 </#if>
49 </div>
50 </#if>
51 </#list>
52 </div>
53 </div>
54 </div>
55 </#if>
56</#if>
Při zpracování šablony došlo k chybě.
Java method "com.mecalux.util.service.impl.MlxSalesOfficeServiceImpl.getOfficesMapByCategoryId(long, String, long)" threw an exception when invoked on com.mecalux.util.service.impl.MlxSalesOfficeServiceImpl object "com.mecalux.util.service.impl.MlxSalesOfficeServiceImpl@1cb59021"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign map = mlxSalesOfficeService.g... [in template "20101#20128#3282514" at line 53, column 5] ----
1<#assign countryCode = (mlxExpandoService.getExpandoValueForClass("com.liferay.portal.kernel.model.Group","country-code", scopeGroupId).getString())!"" />
2<#assign masterName = mlxMastersHelperService.getMasterNameByLayout(layout) />
3
4<!--INIT MKTG-464 SUCCESSPAGE REDESIGN(Estilos para hacer doble columna + Dark)-->
5<style>
6 .corporate--successpage--title, .corporate--successpage--subtitle {color:#fff!important}
7 @media(min-width: 1300px){
8 .corporate--successpage--row {
9 display:flex
10 }
11 .corporate--successpage--item {
12 max-width:50%
13 }
14 }
15 .corporate--successpage *{
16 color: #fff
17 }
18 .corporate--successpage{
19 background-color: #333!important
20 }
21 .corporate--successpage--item-card {
22 background-color: #444!important
23 }
24 .corporate--successpage--description a {
25 color: #fa6900 !important;
26 }
27
28 .corporate--successpage--description a:hover {
29 color: #ff9549 !important
30 }
31 </style>
32 <!--END MKTG-464-->
33
34
35 <#assign privacyMasterId = 46002 />
36
37 <#assign globalGroupId = mlxConstants.getLongConstant("GroupIds","GLOBAL") />
38 <#assign office = '' />
39 <#assign siteInternationalArticleId = '3534343' />
40
41 <#assign vocabularyId = mlxConstants.getLongConstant('VocabularyIds','VOCABULARY_OFFICES_COUNTRIES') />
42 <#assign categoryList = mlxAssetHelperService.getAssetCategoriesByVocabularyId(vocabularyId) />
43 <#assign currentOfficesCategory = 0 />
44
45 <#assign language_id = themeDisplay.getLanguageId() />
46
47 <#list categoryList as cat>
48 <#if cat.description?contains(">"+countryCode+"<")>
49 <#assign currentOfficesCategory = cat.categoryId />
50 </#if>
51 </#list>
52
53 <#assign map = mlxSalesOfficeService.getOfficesMapByCategoryId(currentOfficesCategory, language_id, groupId) />
54
55
56 <#assign telValue=mlxPhoneUtilService.getTelephone(mlxServiceContext)/>
57 <#assign telDash = telValue?replace(" - ", " ")?replace(" ", "-")?replace("(", "")?replace(")", "") />
58
59 <#assign cdn = (mlxUrlUtilService.getCdn(groupId))!"" /> <#-- AÑADIR CDN -->
60
61 <div id="corporate--v3--contact-form--v1" class="corporate--v3--contact-form--v1"
62 data-gtm-event="form"
63 data-gtm-event-category="${ctaOriginParam!'CTA_Default'}"
64 data-gtm-event-ctaorigin="${ctaOriginParam!'CTA_Default'}"
65 data-gtm-event-gaformid="${mlxForm["gaFormId"]!''}"
66 data-gtm-event-formType="${mlxForm.getType()!''}"
67 data-gtm-event-formPosition="footer"
68 data-js-form
69 data-js-form-type="${mlxForm.getPopup()}">
70 <#-- Cambiar url del background por una de la document library cuando esté, de momento pongo la url de PRO actual -->
71 <figure class="corporate--v3--contact-form--v1--figure">
72 <#assign imgWidth = '2048'>
73 <#assign imgUrl = '/documents/20128/3352716/10_contacta_bkg.jpg'>
74 <#assign imgClass = 'corporate--v3--contact-form--v1--figure-image'>
75 <#assign urlParamConcat = imgUrl?contains("?")?then("&","?")>
76
77 ${corporate.img(cdn + imgUrl + urlParamConcat + 'imwidth=' + imgWidth + '', true,
78 'alt="background contact"', 'class="' + imgClass + '" srcset="' + cdn + imgUrl + urlParamConcat + 'imwidth=640&imdensity=1 640w,' +
79 cdn + imgUrl + urlParamConcat + 'imwidth=1024&imdensity=1 1024w,' +
80 cdn + imgUrl + urlParamConcat + 'imwidth=2048&imdensity=1 2048w"')}
81
82 </figure>
83 <div class="corporate--v3--contact-form--v1--container">
84 <div class="corporate--v3--contact-form--v1--info-section">
85 <p class="corporate--v3--contact-form--v1--title"><@corporate.mlxlanguage key="mlx.contactv3.title" /></p>
86 <ul class="corporate--v3--contact-form--v1--info-list">
87 <p class="corporate--v3--contact-form--v1--subtitle"><@corporate.mlxlanguage key="mlx.contactv3.telephone.subtitle" /></p>
88 <#-- Cambiar url del icono phone por una de la document library cuando esté, de momento pongo la url de PRO actual y tambien mirar de poner bien el alt -->
89 <li class="corporate--v3--contact-form--v1--info-list--item"><span class="corporate--v3--contact-form--v1--info--icon">${corporate.img(cdn+'/documents/20128/3352716/10_contacta_ico_phone.svg/2eb57424-7250-dff9-7f15-812b2807b653', true, 'alt="$titlePhone" class="corporate--v3--contact-form--v1--icon"')}</span>
90 <a class="corporate--v3--contact-form--v1--title-highlighted" href="tel:${telDash}" dir="ltr" rel="nofollow">${telValue}</a>
91 </li>
92 <#--<#if (offices?has_content)> -->
93 <p class="corporate--v3--contact-form--v1--subtitle">
94 <@corporate.mlxlanguage key="mlx.contactv3.offices.subtitle" />
95 </p>
96 <#-- Cambiar url del icono location por una de la document library cuando esté, de momento pongo la url de PRO actual y tambien mirar de poner bien el alt -->
97 <li class="corporate--v3--contact-form--v1--info-list--item"><span class="corporate--v3--contact-form--v1--info--icon">${corporate.img(cdn+'/documents/20128/3352716/10_contacta_ico_location.svg/4d23278d-3bf3-a723-0382-89edd823f884', true, 'alt="$titleLocation" class="corporate--v3--contact-form--v1--icon"')}</span>
98 <#-- #set($article = $mlxHelperLocalServiceUtil.getArticleByAssetUrl($assetUrl, $globalGroupId, "$locale")) -->
99 <ul class="corporate--v3--contact-form--v1--office-list">
100
101
102 <#assign language_id = themeDisplay.getLanguageId() />
103 <#assign offices = mlxSalesOfficeService.getOfficesMapByCategoryId(3705718, language_id, groupId) />
104
105 <#if offices?has_content>
106
107 <#list offices as key, value>
108
109 <#list value as keyChild, valueChild>
110
111 <#assign office = (mlxUrlUtilService.getJournalArticleByUrl(keyChild, locale, groupId, true))!"" />
112
113 <#if office?has_content>
114
115 <#assign officeValues = mlxJournalHelperService.getStructureFieldValues(office, languageId) />
116
117 <#if key?index == 0>
118
119 <!--MAIN OFFICE-->
120 <#assign globalContent = jsonFactoryUtil.createJSONObject(officeValues["contentWebFromGlobal"]) />
121 <#assign contentFromGlobalClassPK = globalContent.classPK />
122 <#assign ja = mlxAssetHelperService.fetchLatestApprovedArticle(contentFromGlobalClassPK?number)/>
123 <#assign jaMapStrValues = mlxJournalHelperService.getStructureFieldValues(ja, languageId) />
124
125 <li class="corporate--v3--contact-form--v1--office-list--item"><span class="corporate--v3--contact-form--v1--office--name">${office.title?replace(" [SalesOffice]", "")?upper_case}</span> <p class="corporate--v3--contact-form--v1--office--location">${jaMapStrValues["street_address"]} ${jaMapStrValues["extended_street_address"]}${jaMapStrValues["postal_code"]?has_content?then(' - '+jaMapStrValues["postal_code"],"")}, ${jaMapStrValues["locality"]}</p></li>
126
127 <#else>
128
129 <#assign entry = mlxAssetHelperService.getAssetEntryByJournalArticle(office) />
130 <#assign ctgs = mlxAssetHelperService.getAssetCategoryListByJournalArticle(office) />
131
132 <#list ctgs as cat>
133
134 <!--OTHER OFFICES DESTACADAS DE LA HOME-->
135
136 <#assign globalContent = jsonFactoryUtil.createJSONObject(officeValues["contentWebFromGlobal"]) />
137 <#assign contentFromGlobalClassPK = globalContent.classPK />
138 <#assign ja = mlxAssetHelperService.fetchLatestApprovedArticle(contentFromGlobalClassPK?number)/>
139 <#assign jaMapStrValues = mlxJournalHelperService.getStructureFieldValues(ja, languageId) />
140
141
142 <#if cat.name == "Oficina Destacada Home">
143
144 <li class="corporate--v3--contact-form--v1--office-list--item"><span class="corporate--v3--contact-form--v1--office--name">${office.title?replace(" [SalesOffice]", "")?upper_case}</span> <p class="corporate--v3--contact-form--v1--office--location">${jaMapStrValues["street_address"]} - ${jaMapStrValues["extended_street_address"]} ${jaMapStrValues["postal_code"]}, ${jaMapStrValues["locality"]}</p></li>
145
146 </#if>
147
148 </#list>
149
150 </#if>
151
152 </#if>
153
154 </#list>
155
156 </#list>
157
158 <#else>
159
160 <!--INTERNATIONAL OFFICE SI NO LLEGA NINGUNA OFICINA DESTACADA-->
161
162 <#assign office = mlxAssetHelperService.fetchLatestApprovedArticle(globalGroupId, siteInternationalArticleId) />
163 <#assign jaMapStrValues = mlxJournalHelperService.getStructureFieldValues(office, languageId) />
164
165 <li class="corporate--v3--contact-form--v1--office-list--item"><span class="corporate--v3--contact-form--v1--office--name">${office.title?replace(" [SalesOffice]", "")?upper_case}</span> <p class="corporate--v3--contact-form--v1--office--location">${jaMapStrValues["street_address"]} ${jaMapStrValues["extended_street_address"]} - ${jaMapStrValues["postal_code"]}, ${jaMapStrValues["locality"]}</p></li>
166 </#if>
167
168 <!--VER MÁS OFICINAS-->
169 <#assign officeMasterId = 48003 />
170 <#assign siteId = themeDisplay.getLayout().getGroupId()>
171 <#assign officeLayout=(mlxMastersHelperService.getLayoutByMasterAndGroup(officeMasterId,scopeGroupId)!"") />
172
173 <#if officeLayout?has_content>
174 <#assign officePage = officeLayout.getFriendlyURL() />
175 <li class="corporate--v3--contact-form--v1--office-list--viewmore"><a href="${officePage}" class="corporate--v3--contact-form--v1--office-list--viewmore-link"><@corporate.mlxlanguage key="mlx.contactv3.offices.see-more" /></a>
176 </li>
177 </#if>
178
179 </ul>
180 </div>
181 <div class="corporate--v3--contact-form--v1--form-section">
182 <p class="corporate--v3--contact-form--v1--subtitle"><@corporate.mlxlanguage key="mlx.contactv3.form.subtitle" /></p>
183 <#--form:init-->
184 <form action="${mlxFormSaveActionURL}" method="POST" class="formlyWrapper-Base" id="${pn!''}_contact" data-js-form-submittype="${mlxSubmit!''}">
185 <input name="${pn!''}utmz" type="hidden"/>
186 <input type="hidden" id="${pn!''}g-recaptcha-response" name="${pn!''}g-recaptcha-response">
187 <input type="hidden" id="${pn!''}g-recaptcha-response-action" name="${pn!''}g-recaptcha-response-action" value="validate_captcha">
188 <div class="hide">
189 <label><@corporate.mlxlanguage key="mlx.contact.adt.common.honeypot" /></label>
190 <input type="text" maxlength="480" id="myusername" name="${pn!''}myusername">
191 </div>
192 <#--form:init-->
193 <div class="corporate--v3--contact-form--v1--form--textbox" data-js="js__form-item">
194 <label for="contact-name" class="hide"><@corporate.mlxlanguage key="mlx.contact.field.contact-name" /></label>
195 <input class="corporate--v3--contact-form--v1--form--textbox--input" name="${pn!''}contact-name" id="contact-name" title='<@corporate.mlxlanguage key="mlx.contact.field.contact-name" />' tabindex="1" placeholder='<@corporate.mlxlanguage key="mlx.contact.field.contact-name" />' type="text" maxlength="40" required="required" data-js="js__form-field" data-parsley-trigger="focusout" data-parsley-required="true" data-parsley-maxlength="40" value="${(previousFormValues['contact-name'])!''}">
196 </div>
197 <div class="corporate--v3--contact-form--v1--form--textbox" data-js="js__form-item">
198 <label for="contact-surname" class="hide"><@corporate.mlxlanguage key="mlx.contact.field.contact-surname" /></label>
199 <input class="corporate--v3--contact-form--v1--form--textbox--input" name="${pn!''}contact-surname" id="contact-surname" title='<@corporate.mlxlanguage key="mlx.contact.field.contact-surname" />' tabindex="2" placeholder='<@corporate.mlxlanguage key="mlx.contact.field.contact-surname" />' type="text" maxlength="40" required="required" data-js="js__form-field" data-parsley-trigger="focusout" data-parsley-required="true" data-parsley-maxlength="40" value="${(previousFormValues['contact-surname'])!''}">
200 </div>
201 <div class="corporate--v3--contact-form--v1--form--textbox" data-js="js__form-item">
202 <label for="contact-company" class="hide"><@corporate.mlxlanguage key="mlx.contact.field.contact-company" /></label>
203 <input class="corporate--v3--contact-form--v1--form--textbox--input" name="${pn!''}contact-company" id="contact-company" title='<@corporate.mlxlanguage key="mlx.contact.field.contact-company" />' tabindex="3" placeholder='<@corporate.mlxlanguage key="mlx.contact.field.contact-company" />' type="text" maxlength="120" required="required" data-js="js__form-field" data-parsley-trigger="focusout" data-parsley-required="true" data-parsley-maxlength="120" value="${(previousFormValues['contact-company'])!''}">
204 </div>
205 <div class="corporate--v3--contact-form--v1--form--textbox" data-js="js__form-item">
206 <label for="contact-email" class="hide"><@corporate.mlxlanguage key="mlx.contact.field.contact-email" /></label>
207 <input class="corporate--v3--contact-form--v1--form--textbox--input" name="${pn!''}contact-email" id="contact-email" title='<@corporate.mlxlanguage key="mlx.contact.field.contact-email" />' tabindex="4" placeholder='<@corporate.mlxlanguage key="mlx.contact.field.contact-email" />' type="text" maxlength="40" required="required" data-js="js__form-field" data-parsley-trigger="focusout" data-parsley-type='email' data-parsley-required="true" data-parsley-maxlength="100" value="${(previousFormValues['contact-email'])!''}">
208 </div>
209 <div class="corporate--v3--contact-form--v1--form--row">
210 <div class="corporate--v3--contact-form--v1--form--textbox-small" data-js="js__form-item">
211 <label for="contact-telephone" class="hide"><@corporate.mlxlanguage key="mlx.contact.field.contact-telephone" /></label>
212 <input class="corporate--v3--contact-form--v1--form--textbox--input" name="${pn!''}contact-telephone" id="contact-telephone" title='<@corporate.mlxlanguage key="mlx.contact.field.contact-telephone" />' tabindex="5" placeholder='<@corporate.mlxlanguage key="mlx.contact.field.contact-telephone" />' type="text" maxlength="40" required="required" data-js="js__form-field" maxlength="40" data-parsley-trigger="focusout" data-parsley-required="true" data-parsley-maxlength="40" value="${(previousFormValues['contact-telephone'])!''}">
213 </div>
214 <div class="corporate--v3--contact-form--v1--form--textbox-small" data-js="js__form-item">
215 <label for="contact-postcode" class="hide"><@corporate.mlxlanguage key="mlx.contact.field.contact-postcode" /></label>
216 <input class="corporate--v3--contact-form--v1--form--textbox--input" name="${pn!''}contact-postcode" id="contact-postcode" title='<@corporate.mlxlanguage key="mlx.contact.field.contact-postcode" />' tabindex="6" placeholder='<@corporate.mlxlanguage key="mlx.contact.field.contact-postcode" />' type="text" maxlength="50" required="required" data-parsley-trigger="focusout" data-parsley-required="true" data-parsley-maxlength="50" value="${(previousFormValues['contact-postcode'])!''}" >
217 </div>
218 </div>
219 <div class="corporate--v3--contact-form--v1--form--textbox" data-js="js__form-item">
220 <label for="contact-countryHidden" class="hide"><@corporate.mlxlanguage key="mlx.contact.field.contact-country" /></label>
221 <#-- De momento el current countryCode lo pillo del campo personalizado de site contact-country-default, si hace falta cambiarlo es aqui -->
222 <#assign countryCode = (mlxExpandoService.getExpandoValueForClass("com.liferay.portal.kernel.model.Group","country-code", scopeGroupId).getString())!"" />
223 <#-- Geolocalizar el pais por IP -->
224 <#assign countryIp = (mlxGeoIpUtilService.getCountry(mlxServiceContext))!"" />
225 <#if !countryIp?has_content >
226 <#assign countryIp = countryCode /> <#-- si falla el pais por ip se pone el default -->
227 </#if>
228
229 <select class="corporate--v3--contact-form--v1--form--textbox--select" tabindex="7" title='<@corporate.mlxlanguage key="mlx.contact.field.contact-country" />' id="contact-country" name="${pn!''}contact-country">
230 <#-- Obtener select de paises -->
231 <#assign articleCountry = mlxMastersHelperService.getJournalArticleByMasterAndGroup(countrySelectorMasterId?number, groupId) />
232 <#-- Se hace un replace para poner como seleccionado o el valor previo introducido o el codigo del pais actual -->
233 <#assign countryOptionsHtml = mlxJournalContentService.getContent(articleCountry, articleCountry.getDDMTemplateKey(),"${locale}",themeDisplay,'view')?replace('value="${(previousFormValues["contact-country"])!countryIp}"','value="${(previousFormValues["contact-country"])!countryIp}" selected') />
234 ${countryOptionsHtml}
235 </select>
236 </div>
237 <div class="corporate--v3--contact-form--v1--form--textbox" data-js="js__form-item">
238 <label for="contact-message" class="hide"><@corporate.mlxlanguage key="mlx.contact.field.contact-message" /></label>
239 <#if ((countryCode == "US" || countryCode == "ES") && masterName?lower_case?contains("software"))>
240 <textarea class="corporate--v3--contact-form--v1--form--textbox--input corporate--v3--contact-form--v1--form--textbox--textarea" name="${pn!''}contact-message" title='<@corporate.mlxlanguage key="mlx.contact.field.contact-message" />' id="contact-message" tabindex="8" placeholder='<@corporate.mlxlanguage key="mlx.contact.field.contact-message" />' maxlength="200" data-js="js__form-field" data-parsley-trigger="focusout" data-parsley-maxlength="200" data-parsley-required="true" required="required">${(previousFormValues['contact-message'])!''}</textarea>
241 <#else>
242 <textarea class="corporate--v3--contact-form--v1--form--textbox--input corporate--v3--contact-form--v1--form--textbox--textarea" name="${pn!''}contact-message" title='<@corporate.mlxlanguage key="mlx.contact.field.contact-message" />' id="contact-message" tabindex="8" placeholder='<@corporate.mlxlanguage key="mlx.contact.field.contact-message" /> <@corporate.mlxlanguage key="mlx.contact.adt.common.optional" />' maxlength="200" data-js="js__form-field" data-parsley-trigger="focusout" data-parsley-maxlength="200" >${(previousFormValues['contact-message'])!''}</textarea>
243 </#if>
244 </div>
245
246 <div class="corporate--v3--contact-form--v1--form--bottom">
247 <div class="corporate--v3--contact-form--v1--form--textbox corporate--v3--contact-form--v1--form--checkbox" data-js="js__form-item">
248 <input id="contact-agree" name="${pn!''}contact-agree" tabindex="9" type="checkbox" data-parsley-required="true" data-parsley-trigger="change focusout" required requinetworking="" >
249 <label for="contact-agree"></label>
250 <#assign customPrivacyLayout = mlxMastersHelperService.getLayoutByMasterAndGroup(privacyMasterId, groupId) />
251 <#assign customPrivacyUrl = customPrivacyLayout.getFriendlyURL(locale) />
252
253 <p class="corporate--v3--contact-form--v1--form--textbox-paragraph">
254 <#if validator.isNotNull(i18nLabels["privacity"]!)>
255 ${(i18nLabels["privacity"])}
256 <#else>
257 ${languageUtil.format(locale, "mlx.contact.adt.common.agree", customPrivacyUrl + "?l=true")}
258 </#if>
259 </p>
260 </div>
261 <#--
262 #set($mlxCacheUtilsService = $serviceLocator.findService("mecalux-portlet", "com.mecalux.service.MlxCacheUtilLocalService"))
263 #set($domainDataMap = $mlxCacheUtilsService.getDomainData($groupId))
264 #set($expandoAtributes = $domainDataMap.getExpandoAttributesMap())
265 #set($siteName = $expandoAtributes.get('Site-name'))
266
267 #set($newsAdvice = $languageUtil.get($locale, "mlx.contact.adt.common.lssi") + $languageUtil.get($locale, "mlx.contact.adt.common.optional"))
268
269 #if($siteName.toString().toLowerCase().contains(".com") && $newsAdvice.toString().toLowerCase().contains("interlake"))
270 #set($newsAdvice = $newsAdvice.replace("Interlake ", ""))
271 #end
272 -->
273 <#assign langCommonLssi><@corporate.mlxlanguage key='mlx.contact.adt.common.lssi' /></#assign>
274 <#assign langCommonOptional><@corporate.mlxlanguage key='mlx.contact.adt.common.optional' /></#assign>
275 <#if validator.isNotNull(i18nLabels["lssi"]!)>
276 <#assign newsAdvice = (i18nLabels["lssi"]) />
277 <#else>
278 <#assign newsAdvice = langCommonLssi + " " + langCommonOptional />
279 </#if>
280 <#assign siteName = (mlxExpandoService.getExpandoValueForClass("com.liferay.portal.kernel.model.Group","site-name", scopeGroupId).getString())!"" />
281 <#if (siteName?lower_case?contains(".com") && newsAdvice?lower_case?contains("interlake")) >
282 <#assign newsAdvice = newsAdvice?replace("Interlake ", "") />
283 </#if>
284 <div class="corporate--v3--contact-form--v1--form--textbox corporate--v3--contact-form--v1--form--checkbox" data-js="js__form-item">
285 <input id="checkLssi" name="${pn!''}checkLssi" tabindex="10" type="checkbox">
286 <label for="checkLssi"></label>
287 <p class="corporate--v3--contact-form--v1--form--textbox-paragraph">${newsAdvice}</p>
288 </div>
289 </div>
290 <div class="corporate--v3--contact-form--v1--form--textbox">
291 <#if validator.isNotNull(i18nLabels["button"]!)>
292 <#assign buttonSumbitValue = i18nLabels["button"]>
293 <#else>
294 <#assign buttonSumbitValue><@corporate.mlxlanguage key='mlx.contact.adt.common.button.submit' /></#assign>
295 </#if>
296 <button id="submitButton" type="submit" class="corporate--v3--contact-form--v1--button" tabindex="11" data-js="js__form-submit">${buttonSumbitValue}</button>
297 </div>
298 <#-- </form> -->
299 <#-- Imagen de cargando -->
300 <#--<img alt="" class="sending hide" src="${cdn}/o/corporate-theme/images/common/loading2.gif">-->
301 ${corporate.img(cdn+"/o/corporate-theme/images/common/loading2.gif", false, 'alt=""', 'title=""', 'class="sending hide"')}
302 <#--form:end-->
303 <input type="hidden" title="track-consent" name="${pn}track-consent" id="track-consent" maxlength="10">
304 <input id="geotowns" type="hidden" value="" name="${pn!''}geotowns">
305 <input id="geotowns" type="hidden" value="" name="${pn!''}geotowns">
306 <input id="geostates" type="hidden" value="" name="${pn!''}geostates">
307 </form>
308 <#--form:end-->
309 </div>
310 </div>
311</div>
312
313<!-- DATOS ESTRUCTURADOS SEO JSON+LD -->
314
315<#assign domain = themeDisplay.getPortalDomain() />
316<#assign currentUrl = "https://"+ domain />
317
318<#-- logo -->
319<#assign logo="/documents/20128/3456912/Mecalux-logo_600x60px.jpg" />
320<#if (domain?contains("es")) || (domain?contains("mecalux.es")) >
321 <#assign logo="/documents/20128/3456912/MecaluxEsmena-logo_600x60px.jpg" />
322</#if>
323<#if (domain?contains("us")) || (domain?contains("interlake")) >
324 <#assign logo="/documents/20128/3456912/InterlakeMecalux-logo_600x60px.jpg" />
325</#if>
326
327<#assign telValue=mlxPhoneUtilService.getTelephone(mlxServiceContext)/>
328<#assign telDash = telValue?replace("+", "")?replace(" - ", " ")?replace(" ", "-")?replace("(", "")?replace(")", "") />
329<#assign telValue=mlxPhoneUtilService.getTelephone(mlxServiceContext)/>
330<script type="application/ld+json">
331 {
332 "@context": "https://schema.org",
333 "@type": "Organization",
334 "url": "${currentUrl}",
335 "logo": "${currentUrl}${logo}",
336 "contactPoint": [{
337 "@type": "ContactPoint",
338 "telephone": "+${telDash}",
339 "contactType": "customer service",
340 "areaServed": "${countryCode}",
341 "availableLanguage": [
342 "${locale.getDisplayLanguage()}"
343 <#if siteName?lower_case?contains("belgique")>
344 ,"Dutch"
345 </#if>
346 <#if siteName?lower_case?contains("mecalux.be")>
347 ,"French"
348 </#if>
349 <#if locale.getDisplayLanguage() != "English">
350 ,"English"
351 </#if>
352 ]
353 },{
354 "@type": "ContactPoint",
355 "telephone": "+${telDash}",
356 "contactType": "sales",
357 "areaServed": "${countryCode}",
358 "availableLanguage": [
359 "${locale.getDisplayLanguage()}"
360 <#if siteName?lower_case?contains("belgique")>
361 ,"Dutch"
362 </#if>
363 <#if siteName?lower_case?contains("mecalux.be")>
364 ,"French"
365 </#if>
366 <#if locale.getDisplayLanguage() != "English">
367 ,"English"
368 </#if>
369 ]
370 }]
371 }
372</script>
373
374<script>
375 window.addEventListener('load', function() {
376 var heroContactLinks = document.querySelectorAll(".corporate--v3--hero-video--v1--contact");
377 var inContentCTALinks = document.querySelectorAll(".corporate--v3--highlighted--v1--third-column a");
378 var stickyCTALinks = document.querySelectorAll(".corporate--sticky-header--cta");
379
380 function setGTMEventAttributes(category, ctaOrigin) {
381 var contactForm = document.querySelector("#corporate--v3--contact-form--v1");
382 if (contactForm) {
383 contactForm.setAttribute("data-gtm-event-category", category);
384 contactForm.setAttribute("data-gtm-event-ctaorigin", ctaOrigin);
385 }
386 }
387
388 heroContactLinks.forEach(function(link) {
389 link.addEventListener("click", function(ev) {
390 setGTMEventAttributes("CTA_Hero", "CTA_Hero");
391 });
392 });
393
394 inContentCTALinks.forEach(function(link) {
395 link.addEventListener("click", function(ev) {
396 setGTMEventAttributes("CTA_InContent", "CTA_InContent");
397 });
398 });
399
400 stickyCTALinks.forEach(function(link) {
401 link.addEventListener("click", function(ev) {
402 setGTMEventAttributes("CTA_Sticky", "CTA_Sticky");
403 });
404 });
405 });
406</script>