العملاء

حصل خطأ عند معالجة القالب.
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@43669969"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign clientUrl = mlxUrlUtilService...  [in template "20101#20128#3282451" at line 25, column 25]
----
1<style> 
2    .fancybox__content { 
3        max-width: 750px; 
4
5</style> 
6 
7<#assign globalGroupId = mlxConstants.getLongConstant("GroupIds","GLOBAL")/> 
8<#assign sectorVocabularyId = mlxConstants.getLongConstant('VocabularyIds','VOCABULARY_SECTORS_ID') /> 
9<#assign images_folder = themeDisplay.getPathThemeImages() /> 
10 
11<div class="corporate--section"> 
12	<div class="corporate--client--slider1"> 
13		<div class="corporate--client--slider1--container" data-gtm-block-name="Client" data-js="slider" data-js-type="tiny-slider" data-js-config='{"container": ".corporate--client--slider1--container", "autoplay":true, "autoplayButtonOutput":false, "mouseDrag":true, "controls":false, "nav":false, "loop":false, "responsive": { "0": {"items": 2}, "768": {"items": 3}, "1200": {"items": 4}}}'> 
14			<#if entries?has_content> 
15 
16				<#assign cdn = (mlxUrlUtilService.getCdn(groupId))!"" /> 
17 
18				<#list entries as curEntry> 
19					<#assign client = mlxAssetHelperService.getJournalArticleByEntry(curEntry) /> 
20					<#assign clientArticleId = client.getArticleId() /> 
21					<#assign clientGroupId = client.getGroupId() /> 
22					<#assign clientValues = mlxJournalHelperService.getStructureFieldValues(client, locale) /> 
23					<#assign clientActivity = (clientValues["activity"])!"" /> 
24					<#assign clientVideos = (clientValues["videos"])!"" /> 
25            		<#assign clientUrl =  mlxUrlUtilService.getUrlByJournalArticle(client, locale, groupId)?string /> 
26					<#assign clientName = (clientValues["name"])!"" /> 
27					<#assign clientLogoContent = (clientValues["logo"])!"{}"  /> 
28					 
29					<#if clientLogoContent?has_content> 
30						<#assign clientLogo = jsonFactoryUtil.createJSONObject(clientLogoContent) /> 
31					</#if> 
32 
33					<!-- sector --> 
34					<#assign sectorCategory = mlxAssetHelperService.getAssetCategoryByAssetEntryAndVocabularyId(curEntry, sectorVocabularyId)!"" /> 
35					<#if sectorCategory != ""> 
36						<#assign sectorCategoryId = sectorCategory.categoryId /> 
37					<#else> 
38						<#assign sectorCategoryId = 0 /> 
39					</#if> 
40					<#assign sector = mlxAssetHelperService.getAssetCategory(sectorCategoryId)!"" /> 
41					<#if sector != ""> 
42						<#assign sectorTitle = sector.getTitle(locale) /> 
43					<#else> 
44						<#assign sectorTitle = "" /> 
45					</#if> 
46					<#if clientVideos?has_content> 
47						<#list clientVideos as clientVideo> 
48							<#assign clientVideoJSON = jsonFactoryUtil.createJSONObject(clientVideo) /> 
49							<#assign clientVideoUUID = clientVideoJSON.getString("uuid") /> 
50							<#assign clientVideoUrl = mlxDocumentsHelperService.getDocumentUrlFromUUID(clientVideoUUID, locale) /> 
51						</#list> 
52					</#if> 
53					<#if clientLogo?has_content> 
54						<#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(clientLogo.uuid, globalGroupId) /> 
55						<#assign clientLogoUrl = mlxDocumentsHelperService.getDocumentUrlFromUUID(clientLogo.uuid, "${locale}")/> 
56						<#assign clientLogoAlt = mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentTitle",fileEntry.getFileVersion().getFileVersionId()).getString(locale)!""/> 
57						 
58						<#if clientLogoAlt == ""> 
59							<#assign clientLogoAlt = clientName /> 
60						</#if> 
61 
62						<div class="corporate--client--slider1--item"> 
63							<figure class="corporate--client--slider1--item-figure"> 
64                                <#if clientVideoUrl?has_content> 
65    								<a href="${clientUrl}" rel="nofollow" data-fancybox data-width="75%" data-height="906" data-type="iframe" class="corporate--client--slider1--item-image-cta" >  
66    									${corporate.img(cdn+clientLogoUrl, true, 'alt="' + clientLogoAlt + '"', 'title="' + clientLogoAlt + '"', 'class="corporate--client--slider1--item-image"')} 
67     
68    										<span class="corporate--client--slider1--item-cta"> 
69    											${corporate.img(images_folder + "/icons/play-button-min.svg", true, 'class="corporate--client--slider1--video-icon"')} 
70    										</span> 
71    								</a> 
72    							<#else> 
73    								<a href="${clientUrl}" rel="nofollow" data-fancybox data-width="50%" data-type="iframe" class="corporate--client--slider1--item-image-cta" >  
74    									${corporate.img(cdn+clientLogoUrl, true, 'alt="' + clientLogoAlt + '"', 'title="' + clientLogoAlt + '"', 'class="corporate--client--slider1--item-image"')} 
75    								</a> 
76								</#if> 
77							</figure> 
78						</div> 
79					</#if> 
80				</#list> 
81			</#if> 
82		</div> 
83	</div> 
84</div> 
85 
86<#-- MAQUETACIÓN FILTROS PARA PAGINA DE CLIENTES --> 
87<#-- 
88<#assign userId = themeDisplay.getUserId() /> 
89<#assign productGeneralList = [] /> 
90<#assign sectorGeneralList = [] /> 
91<#assign productStrId = 398133 /> 
92<#assign productSoftwareStrId = 455191 /> 
93<#assign sortField = "order" /> 
94--> 
95<#-- ETIQUETAS DE IDIOMA --> 
96<#-- 
97<#assign filterText = languageUtil.get(locale,"mlx.client.filter.filtered-by") /> 
98<#assign filterSectorSelectText = languageUtil.get(locale,"mlx.client.filter.sector") /> 
99<#assign filterSolutionsSelectText = languageUtil.get(locale,"mlx.client.filter.product") /> 
100<#assign filterButtonText = languageUtil.get(locale,"mlx.client.filter.see-customers") /> 
101--> 
102<#-- OBTENER LISTA DE PRODUCTOS NORMALES E INSERTAR EN LISTA GENERAL --> 
103<#-- 
104<#assign productList = mlxAssetHelperService.getJournalArticleListByStructureIdIdSortedByStructureFieldName(groupId, userId, productStrId, sortField, locale) /> 
105 
106<#if productList?has_content> 
107    <#list productList as product> 
108        <#assign productGeneralList += [product] /> 
109    </#list> 
110</#if> 
111--> 
112<#-- OBTENER LISTA DE PRODUCTOS SOFTWARE E INSERTAR EN LISTA GENERAL --> 
113<#-- 
114<#assign productSoftwareList = mlxAssetHelperService.getJournalArticleListByStructureIdIdSortedByStructureFieldName(groupId, userId, productSoftwareStrId, sortField, locale) /> 
115 
116<#if productSoftwareList?has_content> 
117    <#list productSoftwareList as productSoftware> 
118        <#assign productGeneralList += [productSoftware] /> 
119    </#list> 
120</#if> 
121--> 
122<#-- OBTENER LISTA DE SECTORES --> 
123<#-- 
124<#assign vocabularyId = mlxConstants.getLongConstant('VocabularyIds','VOCABULARY_SECTORS_ID') /> 
125<#assign sectorsList = mlxAssetHelperService.getAssetCategoriesByVocabularyId(vocabularyId) /> 
126--> 
127<#-- 
128<div class="corporate--client--filters"> 
129    <div class="corporate--client--filters--container"> 
130        <h4 class="corporate--client--filters--title">${filterText}</h4> 
131        <form class="corporate--client--filters--form"> 
132            <div class="corporate--client--filters--form--row"> 
133                <div class="corporate--client--filters--form--column--small"> 
134                    <select id="listaSectores" name="listaSectores" required="required" tabindex="1" class="corporate--client--filters--form--select"> 
135                        <option value="">${filterSectorSelectText}</option> 
136                        <#if sectorsList?has_content> 
137                            <#list sectorsList as sector> 
138                                <option value="${sector.getCategoryId()}">${sector.getTitle(locale)}</option> 
139                            </#list> 
140                        </#if> 
141                    </select>  
142                </div> 
143                <div class="corporate--client--filters--form--column--small"> 
144                    <select id="listaCategorias" name="listaCategorias" required="required" tabindex="1" class="corporate--client--filters--form--select"> 
145                        <option value="">${filterSolutionsSelectText}</option> 
146                         
147                        <#if productGeneralList?has_content> 
148                            <#list productGeneralList as productGeneral> 
149                                <#assign productGeneralName = mlxJournalHelperService.getStructureFieldValue(productGeneral, "name", locale) /> 
150                                <option value="${productGeneral.articleId}">${productGeneralName}</option> 
151                            </#list> 
152                        </#if> 
153                    </select> 
154                </div> 
155                <div class="corporate--client--filters--form--column--small"> 
156                    <button class="corporate--client--filters--button" id="submitPC" type=button onclick="" >${filterButtonText}</button> 
157                </div> 
158            </div> 
159        </form> 
160    </div> 
161</div> 
162--> 
حصل خطأ عند معالجة القالب.
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@43669969"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign clientUrl = mlxUrlUtilService...  [in template "20101#20128#3282424" at line 30, column 33]
----
1<#-- VARIABLES GLOBALES --> 
2<#assign globalGroupId = mlxConstants.getLongConstant("GroupIds","GLOBAL") /> 
3<#assign clientStrKey = "CLIENT-STR" /> 
4<#assign productStrKeys = ["PRODUCT-STR", "SOFTWARE-SOLUTIONS-PRODUCTS-STR"] /> 
5<#assign practicalCaseStrKeys = "PRACTICAL-CASE-STR" /> 
6<#assign sectorVocabularyId = mlxConstants.getLongConstant('VocabularyIds','VOCABULARY_SECTORS_ID') /> 
7 
8<#-- ETIQUETAS DE IDIOMA --> 
9<#assign lbListText><@corporate.mlxlanguage key='mlx.client.list.some-clients' /></#assign> 
10<#assign lbPaginationText><@corporate.mlxlanguage key='mlx.client.list.see-more' /></#assign> 
11<#assign lbNoResultsText><@corporate.mlxlanguage key='mlx.client.list.no-results' /></#assign> 
12<#assign lbViewVideo><@corporate.mlxlanguage key='mlx.client.watch-video' /></#assign> 
13<#assign lbSector><@corporate.mlxlanguage key='mlx.client.sector' /></#assign> 
14<#assign lbActivity><@corporate.mlxlanguage key='mlx.client.activity' /></#assign> 
15<#assign lbInstallation><@corporate.mlxlanguage key='mlx.client.installation' /></#assign> 
16<#assign lbViewCasePractice><@corporate.mlxlanguage key='mlx.client.see-practical-case' /></#assign> 
17 
18<#if entries?has_content> 
19 
20    <#assign cdn = (mlxUrlUtilService.getCdn(groupId))!"" /> 
21 
22    <div class="corporate--client--list--container" data-gtm-block-name="Client"> 
23     
24        <#-- TITULO SECCION --> 
25        <h3 class="corporate--client--list--title">${lbListText}</h3> 
26 
27        <div class="corporate--client--list" id="contenedorClientes"> 
28			<#list entries as curEntry> 
29				<#assign client = mlxAssetHelperService.getJournalArticleByEntry(curEntry) /> 
30				<#assign clientUrl =  mlxUrlUtilService.getUrlByJournalArticle(client, locale, groupId)?string /> 
31				<#assign clientArticleId = client.getArticleId() /> 
32				<#assign clientGroupId = client.getGroupId() /> 
33				<#assign clientValues = mlxJournalHelperService.getStructureFieldValues(client, locale) /> 
34                <#assign clientName = (clientValues["name"]?string)!"" /> 
35				<#assign clientActivity = (clientValues["activity"])!"" /> 
36				<#assign clientVideos = (clientValues["videos"])!"" /> 
37 
38				<!-- sector --> 
39				<#assign sectorCategory = mlxAssetHelperService.getAssetCategoryByAssetEntryAndVocabularyId(curEntry, sectorVocabularyId)!"" /> 
40				<#if sectorCategory != ""> 
41					<#assign sectorCategoryId = sectorCategory.categoryId /> 
42				<#else> 
43					<#assign sectorCategoryId = 0 /> 
44				</#if> 
45				<#assign sector = mlxAssetHelperService.getAssetCategory(sectorCategoryId)!"" /> 
46				<#if sector != ""> 
47					<#assign sectorTitle = sector.getTitle(locale) /> 
48				<#else> 
49					<#assign sectorTitle = "" /> 
50				</#if> 
51				 
52				<#if clientVideos?has_content> 
53                    <#list clientVideos as clientVideo> 
54                        <#assign clientVideoJSON = jsonFactoryUtil.createJSONObject(clientVideo) /> 
55                        <#assign clientVideoUUID = clientVideoJSON.getString("uuid") /> 
56        				<#assign clientVideoUrl = mlxDocumentsHelperService.getDocumentUrlFromUUID(clientVideoUUID, locale) /> 
57                    </#list> 
58                </#if> 
59     
60                <#-- PRODUCTOS RELACIONADOS DEL CLIENTE --> 
61                <#assign clientProductRelatedContent = mlxAssetHelperService.getRelatedArticlesByStructure(groupId, clientArticleId, productStrKeys)!"" /> 
62                <#assign clientProduct = [] /> 
63                <#assign productsId = '' /> 
64                 
65                <#if clientProductRelatedContent?has_content>      
66                    <#list clientProductRelatedContent as content> 
67                        <#assign productId = content.id /> 
68                        <#assign productValues = mlxJournalHelperService.getStructureFieldValues(content, locale) /> 
69                        <#assign productName = (productValues["name"]?string)!"" /> 
70                        <#assign productUrl = mlxUrlUtilService.getUrlByJournalArticle(content, locale, groupId)?string /> 
71                        <#assign clientProduct += [{"id": productId, "name": productName, "url": productUrl}] />  
72                    </#list> 
73                     
74                    <#list clientProduct as product> 
75                        <#assign productsId += product.id + ' ' /> 
76                    </#list> 
77 
78                    <#assign clientLogoContent = (clientValues["logo"])!"" /> 
79                     
80                    <#if clientLogoContent?has_content> 
81                        <#if clientLogoContent?contains("\\u")> 
82                            <#assign clientLogoContent = clientLogoContent?replace("\\u", "") />  
83                        </#if> 
84                        <#assign clientLogo = clientLogoContent?eval />  
85 
86                        <#if clientLogo?has_content> 
87                            <#assign fileEntry = mlxDLFileEntryHelperService.getDLFileEntry(clientLogo.uuid, globalGroupId) /> 
88                            <#assign clientLogoUrl = mlxDocumentsHelperService.getDocumentUrlFromUUID(clientLogo.uuid, "${locale}") /> 
89                            <#assign clientLogoAlt = mlxExpandoService.getExpandoValueForClass("com.liferay.document.library.kernel.model.DLFileEntry","mlxDocumentTitle",fileEntry.getFileVersion().getFileVersionId()).getString(locale)!""/> 
90                             
91                            <#if clientLogoAlt == ""> 
92							    <#assign clientLogoAlt = clientName /> 
93						    </#if> 
94                             
95                            <div class="corporate--client--list--item" data-sector="${sectorCategoryId}" data-products="${productsId}"> 
96                                <#if clientVideoUrl?has_content> 
97                                    <a href="${clientUrl}" class="corporate--client--list--item--link" rel="nofollow" data-fancybox data-video data-width="75%" data-type="iframe"> 
98                                        ${corporate.img(cdn+clientLogoUrl, true, 'alt="' + clientLogoAlt + '"', 'title="' + clientLogoAlt + '"', 'class="corporate--client--list--item--image"')} 
99                                        <span class="corporate--client--list--item--badge">${lbViewVideo}</span> 
100                                    </a> 
101                                <#else> 
102                                    <a href="${clientUrl}" class="corporate--client--list--item--link" rel="nofollow" data-fancybox data-width="50%" data-type="iframe"> 
103                                        ${corporate.img(cdn+clientLogoUrl, true, 'alt="' + clientLogoAlt + '"', 'title="' + clientLogoAlt + '"', 'class="corporate--client--list--item--image"')} 
104                                    </a> 
105                                </#if> 
106                            </div> 
107                        </#if> 
108                    </#if> 
109				</#if> 
110			</#list> 
111		</div> 
112		<#-- MENSAJE DE "SIN RESULTADOS" --> 
113    	<div id="noDataMSG" style="display: none;"> 
114    	    ${lbNoResultsText} 
115    	</div> 
116 
117</#if> 
118<#-- TO-DO: acabar de dejar fino, por el momento ocultamos los filtros  
119<script> 
120    function setDisplayBtLoadMore(property) { 
121        const containerBtLoadMore = document.querySelector('#show-more button'); 
122        containerBtLoadMore.style.display = property; 
123
124     
125    function addResults(container, elements, property) { 
126        Array.from(elements) 
127            .forEach(function(element) { 
128                container.append(element); 
129                element.style.display = property; 
130        }); 
131
132     
133    function removeElementsByClass(className){ 
134        const elements = document.getElementsByClassName(className); 
135        while(elements.length > 0){ 
136            elements[0].parentNode.removeChild(elements[0]); 
137
138
139     
140    function existsData(elements) { 
141        const lbNoData = document.querySelector('#noDataMSG'); 
142 
143        if (elements.length == 0) lbNoData.style.display = 'inline-block'; 
144        else lbNoData.style.display = 'none'; 
145
146     
147    function setDisplayResults(container, elements, limitElements) { 
148         
149        removeElementsByClass('corporate--client--list--item'); 
150         
151        switch(true) { 
152          case (elements.length >= limitElements): 
153                //setDisplayBtLoadMore('inline-block'); 
154                 
155                let resultsLimit = elements.slice(0, limitElements); 
156                let resultsOver = elements.slice(limitElements, elements.length); 
157                 
158                addResults(container, resultsLimit, "flex"); 
159                addResults(container, resultsOver, "none"); 
160                break; 
161                 
162          case ((elements.length < limitElements) && (elements.length > 0)): 
163                //setDisplayBtLoadMore("none"); 
164                addResults(container, elements, "flex"); 
165                break; 
166                 
167          case (elements.length == 0): 
168                //setDisplayBtLoadMore("none"); 
169                break; 
170
171
172     
173    /* INICIO */ 
174    const btLoadMore = document.querySelector('#show-more button'); 
175    const btFilter = document.querySelector('#submitPC'); 
176    const CONTAINER = document.querySelector('#contenedorClientes'); 
177    const ELEMENTS = [...document.querySelectorAll('.corporate--client--list--item')]; 
178    const LIMITELEMENTS = 36; 
179    let currentItems = LIMITELEMENTS; 
180    let currentElements = ELEMENTS; 
181	 
182	/* 
183    existsData(ELEMENTS); 
184    setDisplayResults(CONTAINER, ELEMENTS, LIMITELEMENTS); 
185 
186    btLoadMore.addEventListener('click', (e) => { 
187        for (let i = currentItems; i < currentItems + LIMITELEMENTS; i++) { 
188            if (currentElements[i]) { 
189                currentElements[i].style.display = 'flex'; 
190
191
192         
193        currentItems += LIMITELEMENTS; 
194     
195        if (currentItems >= currentElements.length) event.target.style.display = 'none'; 
196    }); 
197    */ 
198    btFilter.addEventListener('click', (e) => { 
199        currentItems = LIMITELEMENTS; 
200         
201        let valueSector = document.querySelector('#listaSectores').value; 
202 
203        let valueProductString = document.querySelector('#listaCategorias').value; 
204        let valueProduct = ''; 
205        if (valueProductString != '') valueProduct = ((parseInt(valueProductString, 10))+1).toString(); 
206         
207        if (valueSector == '' && valueProduct == '') { 
208            setDisplayResults(CONTAINER, ELEMENTS, LIMITELEMENTS); 
209            existsData(ELEMENTS); 
210        } else if (valueSector != '' && valueProduct == '') { 
211            currentElements = ELEMENTS.filter(element => (element.dataset.sector == valueSector)); 
212            setDisplayResults(CONTAINER, currentElements, LIMITELEMENTS); 
213            existsData(currentElements); 
214        } else if (valueSector == '' && valueProduct != '') { 
215            currentElements = ELEMENTS.filter(element => (element.dataset.products).includes(valueProduct)); 
216            setDisplayResults(CONTAINER, currentElements, LIMITELEMENTS); 
217            existsData(currentElements); 
218        } else if (valueSector != '' && valueProduct != '') { 
219            currentElements = ELEMENTS.filter(element => (element.dataset.products).includes(valueProduct)); 
220            finalElements = currentElements.filter(element => (element.dataset.sector == valueSector)); 
221            setDisplayResults(CONTAINER, finalElements, LIMITELEMENTS); 
222            existsData(finalElements); 
223
224    }); 
225</script> 
226--> 
— بند لكل صفحه
عرض ٣٧ - ٧٢ من ٩٥ نتائج.