EPAM NEORIS | Digital Business Transformation Accelerator

Home
Asset Publisher
Asset Publisher
Home test

United to grow.
Together to transform.

We are EPAM NEORIS, a digital accelerator that offers
customized solutions that drive measurable outcomes.

25

Years of experience

55

+

Countries use our solutions

60

K+

Experts developing cutting-edge technology

Our Services

Each solution is designed to drive innovation,
efficiency, and competitiveness in your company.

Digital Transformation

We reimagine operating models and experiences so your company can grow in the digital world.

Learn more
Artificial Intelligence
& Advanced Analytics

We detect opportunities and anticipate trends with the power of data.

Learn more
Process
Automation & RPA

We free your teams from repetitive tasks so they can focus on what really matters.

Learn more
Technology Consulting / Digital Consulting

We translate complex challenges into clear plans that integrate innovation and strategy.

Learn more
Software Development
& DevOps

We design agile solutions that scale with your business and accelerate time-to-market.

Learn more
Mainframe
Modernization

We update your legacy technology to make it more flexible, secure, and connected to the digital ecosystem.

Learn more
Cloud Services

We maximize the performance and resilience of your operations with customized architectures.

Learn more

Success Stories

Stories of innovation with real impact

The world's largest companies trust us to accelerate their digital transformation. Discover how we have taken several clients to the next level with customized solutions.

Red.es

Project with Red.es to strengthen the publication, management, and reuse of open data in Spain through technical support, semantic technology, and an AI chatbot.

Learn more
Pan American Energy

EPAM NEORIS developed a mobile solution with SAP BTP and SAP Fiori to digitize the risk hunting process, improving safety and response time in the field.

Learn more
Cemex

Project that digitized and optimized its supply chain in Spain, Poland, and the United Kingdom through a mobile and web solution that reduced loading times and increased security.

Learn more

Let's talk about how
we can transform your business

Connect with our experts in digital transformation and software development. At EPAM NEORIS, we design solutions tailored to your challenges.

Asset Publisher
Asset Publisher
Asset Publisher
Primer Parrafo Home

NEORIS is a Digital Accelerator

that helps companies step into the future.

We combine deep industry knowledge with the highest technological expertise in the market to create tailored solutions to overcome your business challenges and create disruptive growth.

We have 20 years of experience as business partner of some of the biggest companies in the world. We lead their digital transformation with a business-oriented mindset and the best tech-teams available, trained to target your businesses’ pain-points.


Listado Blog Home

This is what distinguishes our Tech Consulting.

These are our pillars for Digital Transformation

TRUE AGILE – We abide by the principles of Agile methodology, working on efficient and adaptive sprints to deliver quality solutions in time. We have specialized teams trained in Scrum, DevOps, Lean, Prototype, RAD and XP methodologies to tackle any type of project regardless of size and complexity.

BUSINESS ACUMEN – Our industry leaders are veteran businessmen who know their industries inside-out and guide their teams past common pitfalls to deliver deep-impact value. We take pride in our unique Roadmap Generation for each project, which allows us to have some of the lowest levels of errors and delays in the Technology industry.

CULTURE TRANSFORMATION – We transform the Digital Culture of your company to embrace change and harness innovation. Every project starts with a NEORIS Registered Tech Maturity Assessment, which identifies Technological Pain Points in your company which we target with Employee Specialized Training and Deep-dive workshops.
 
DATA CENTRIC – We believe in what we can measure. This is why every Digital Solution we provide is backed-up by constant benchmarks of industry-specific markets and users. We stay on the vanguard by constantly checking our actions against hard-data and adapting to the ever-shifting paradigms of Technology use.

DIGITAL ARCHITECTURE – We don’t just provide Digital Solutions; we create a Digital Ecosystem tailored to your company’s unique situation that allows complete integration between Technology, your employees and your users. This is what separates a quick-fix from a robust and long lasting solution that will empower your business for years to come.

Be part of a Smarter World

Asset Publisher

Latest Insights From NEORIS

Asset Publisher
An error occurred while processing the template.
The following has evaluated to null or missing:
==> homeLeaders  [in template "20099#20135#65764" at line 452, column 16]

----
Tip: If the failing expression is known to be 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: #list homeLeaders as leader  [in template "20099#20135#65764" at line 452, column 9]
----
1<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 
2<#assign watermarkMap = "/documents/20126/45625/worldMap.png/" > 
3 
4<#if entries?has_content> 
5    <#assign homeLeaders = []/> 
6	<#list entries as curEntry> 
7		<#assign journalArticle = curEntry.getAssetRenderer().getArticle() /> 
8        <#assign document = saxReaderUtil.read(journalArticle.getContent()) /> 
9        <#assign root = document.getRootElement() /> 
10        <#assign elements = initializeVariables(root, ["Name","Job","Office","Description","Photo"]) /> 
11		<#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry) /> 
12		 
13		<#assign leaderName = "" /> 
14        <#if elements.Name?first?? && extractStringValue(elements.Name?first, locale) != "null"> 
15            <#assign leaderName = extractStringValue(elements.Name?first, locale) /> 
16        </#if> 
17		 
18		<#assign leaderJob = "" /> 
19        <#if elements.Job?first?? && extractStringValue(elements.Job?first, locale) != "null"> 
20            <#assign leaderJob = extractStringValue(elements.Job?first, locale) /> 
21        </#if> 
22		 
23		<#assign leaderOffice = "" /> 
24        <#if elements.Office?first?? && extractStringValue(elements.Office?first, locale) != "null"> 
25            <#assign leaderOffice = extractStringValue(elements.Office?first, locale) /> 
26        </#if> 
27		 
28		<#assign leaderDescription = "" /> 
29        <#if elements.Description?first?? && extractStringValue(elements.Description?first, locale) != "null"> 
30            <#assign leaderDescription = extractStringValue(elements.Description?first, locale) /> 
31        </#if> 
32		<#assign leaderPhoto = "" /> 
33        <#if elements.Photo?first?? && extractStringValue(elements.Photo?first, locale) != "null"> 
34            <#assign leaderPhoto = extractStringValue(elements.Photo?first, locale) /> 
35        </#if>	 
36		<#assign homeLeaders = homeLeaders + [{"Name":leaderName, "Job":leaderJob ,"Office":leaderOffice, "Description":leaderDescription, "Photo":leaderPhoto }]/>	 
37	</#list> 
38</#if> 
39 
40<style> 
41	.containerMeetOurGlobalLeadershipLeaderHome{ 
42		padding-bottom: 60px; 
43
44 
45	.titleMeetOurGlobalLeadership{ 
46		font-size: 32px; 
47		font-weight: bold; 
48		font-style: normal; 
49		font-stretch: normal; 
50		line-height: 1.25; 
51		letter-spacing: normal; 
52		text-align: center; 
53		color: #000000; 
54
55 
56	.descriptionMeetOurGlobalLeadership{ 
57	  font-size: 14px; 
58	  font-weight: normal; 
59	  font-style: normal; 
60	  font-stretch: normal; 
61	  line-height: 1.43; 
62	  letter-spacing: normal; 
63	  text-align: center; 
64	  color: #000000;     
65
66 
67	.meetTeamLeaders{ 
68	  padding: 12px 24px; 
69	  font-size: 18px; 
70	  font-weight: bold; 
71	  font-style: normal; 
72	  font-stretch: normal; 
73	  line-height: 1.33; 
74	  letter-spacing: normal; 
75	  color: #000000; 
76	  border: 2px solid black; 
77
78 
79	.ceoImgLeader{ 
80		height: 100%; 
81		background-repeat: no-repeat!important; 
82		background-position: center top!important; 
83
84 
85	.containerImgLeaderAbout{ 
86		text-align: center; 
87		height: 340px;     
88		background-repeat: no-repeat; 
89		background-position: center top; 
90		transition: background-size .4s ease-in; 
91
92 
93	.containerInfoLeaderAbout{ 
94		padding-left: 30px; 
95		padding-top: 15px; 
96
97 
98	.containerInfoLeaderAbout p{ 
99		margin: 0px; 
100		font-size: 14px; 
101		font-weight: 300; 
102		font-style: normal; 
103		font-stretch: normal; 
104		line-height: normal; 
105		letter-spacing: normal; 
106		color: #000000; 
107
108 
109	.containerInfoLeaderAbout p:first-child{ 
110		font-weight: bold; 
111
112 
113	.descriptionCeo{ 
114		position: absolute; 
115		bottom: 85px; 
116		left: -195%; 
117		width: 200%; 
118		font-size: 14px; 
119		font-weight: normal; 
120		font-style: normal; 
121		font-stretch: normal; 
122		line-height: 1.43; 
123		letter-spacing: normal; 
124		color: #000000; 
125
126 
127	.infoCeo{ 
128		position: absolute; 
129		top: 25px; 
130		left: -12%; 
131		width: 50%; 
132		text-align: right; 
133
134 
135	.infoCeo p{ 
136		margin: 0px; 
137		font-size: 14px; 
138		font-weight: 300; 
139		font-style: normal; 
140		font-stretch: normal; 
141		line-height: normal; 
142		letter-spacing: normal; 
143		color: #000000; 
144
145 
146	.infoCeo p:first-child{ 
147		font-weight: bold; 
148
149 
150	.containerButtonLeaderHome{ 
151		text-align: center; 
152		padding-top: 20px; 
153
154 
155	.meetTeamLeaders:hover{ 
156		text-shadow: currentcolor 0.8px 0px 0px; 
157		font-size: 18px; 
158		padding: 12px 24px; 
159		border: 2px solid black; 
160		cursor: pointer; 
161
162 
163	.rowContainerLeadersAbout{ 
164		display: flex; 
165		//justify-content: space-between; 
166		margin-bottom: 35px; 
167		padding-bottom: 35px; 
168		border-bottom: 1px solid #d1d3d4 
169
170 
171	.containerLeadersAbout{ 
172		flex: 0 0 17%; 
173
174 
175	.containerLeadersAbout:hover {  
176		cursor: pointer; 
177
178 
179	#leaders-adt .containerLeaderAboutPopup { 
180		background-color: #fff; 
181		color: black; 
182		text-align: center; 
183		position: fixed; 
184		top: 9%; 
185		//bottom: 9%; 
186		left: 20%; 
187		right: 20%; 
188		content: ""; 
189		padding: 1% 5% 1% 5%; 
190
191 
192	#leaders-adt .popuptext{ 
193		visibility: hidden; 
194		background-color: #000000ad; 
195		width: 100%; 
196		position: fixed; 
197		height: 100%; 
198		top: 0; 
199		left: 0; 
200		z-index: 55; 
201
202 
203	#leaders-adt .show { 
204		visibility: visible; 
205		-webkit-animation: fadeIn 1s; 
206		animation: fadeIn 1s; 
207		z-index: 60; 
208
209 
210	#leaders-adt .showWithoutTime{ 
211		visibility: visible; 
212		animation: 0s; 
213		z-index: 60; 
214
215 
216	#leaders-adt .popup .show { 
217	  visibility: visible; 
218	  -webkit-animation: fadeIn 1s; 
219	  animation: fadeIn 1s; 
220
221 
222	@-webkit-keyframes fadeIn { 
223	  from {opacity: 0;} 
224	  to {opacity: 1;} 
225
226 
227	@keyframes fadeIn { 
228	  from {opacity: 0;} 
229	  to {opacity:1 ;} 
230
231 
232	.rowFlexLeaderCenterAboutPopup{ 
233		height: 100%; 
234		background-repeat: no-repeat!important; 
235		background-size: contain!important; 
236
237 
238	.rowFlexLeaderCenterAboutPopup div{ 
239		height: 100%; 
240
241 
242	.flexLeaderCenterAboutPopup{ 
243		display: flex; 
244		justify-content: center; 
245		align-items: center; 
246		height: 100%; 
247		display: flex; 
248		flex-wrap: nowrap; 
249		flex-flow: column; 
250		align-items: flex-start; 
251
252 
253	.flexLeaderCenterAbout{ 
254		text-align: left; 
255
256 
257	.addrsLeaderAboutPopup{ 
258		font-size: 14px; 
259		font-weight: normal; 
260		font-style: normal; 
261		font-stretch: normal; 
262		line-height: 1.14; 
263		letter-spacing: normal; 
264		color: #5f6569; 
265
266 
267	.jobLeaderAboutPopup{ 
268		font-size: 14px; 
269		font-weight: normal; 
270		font-style: normal; 
271		font-stretch: normal; 
272		line-height: 1.14; 
273		letter-spacing: normal; 
274		color: #5f6569; 
275		padding-bottom: 25px; 
276
277 
278	.nameLeaderAboutPopup{ 
279		font-size: 32px; 
280		font-weight: bold; 
281		font-style: normal; 
282		font-stretch: normal; 
283		line-height: 1.25; 
284		letter-spacing: normal; 
285		color: #000000; 
286
287 
288	.descriptionLeaderAboutPopup{ 
289		font-size: 16px; 
290		font-weight: normal; 
291		font-style: normal; 
292		font-stretch: normal; 
293		line-height: 1.5; 
294		letter-spacing: normal; 
295		color: #000000; 
296
297 
298	.spanCloseDetailLeaderPopup{ 
299		float: right; 
300		position: absolute; 
301		right: 3%; 
302		top: 5%; 
303		font-size: 23px; 
304		color: #989da1; 
305		z-index: 66; 
306
307 
308	.spanCloseDetailLeaderPopup:hover {  
309		cursor: pointer; 
310
311 
312	.imgLeaderAboutPopup{ 
313		background-repeat: no-repeat!important; 
314		background-position: left!important; 
315		background-size: contain!important; 
316
317 
318	.containerBeforeLeaderAbout{ 
319		float: left; 
320		position: absolute; 
321		left: 0; 
322		top: 0%; 
323		font-size: 23px; 
324		color: #989da1; 
325		z-index: 67; 
326		height: 100%; 
327		display: flex; 
328		align-items: center; 
329
330 
331	.containerBeforeLeaderAbout:hover { 
332		cursor: pointer; 
333
334 
335	.containerAfterLeaderAbout{ 
336		float: right; 
337		position: absolute; 
338		right: 0; 
339		top: 0%; 
340		font-size: 23px; 
341		color: #989da1; 
342		z-index: 67; 
343		height: 100%; 
344		display: flex; 
345		align-items: center; 
346
347 
348	.containerAfterLeaderAbout:hover {  
349		cursor: pointer;  
350
351 
352	.beforeLeaderAbout{ 
353		left: 0px; 
354		position: absolute; 
355		width: 40px; 
356		height: 80px; 
357		background: #f2f3f3; 
358		-moz-border-radius: 0 100px 100px 0; 
359		-webkit-border-radius: 0 100px 100px 0; 
360		border-radius: 0 100px 100px 0; 
361		display: flex; 
362		align-items: center; 
363		justify-content: center; 
364		cursor: point; 
365
366 
367	.afterLeaderAbout{ 
368		right: 0px; 
369		position: absolute; 
370		width: 40px; 
371		height: 80px; 
372		background: #f2f3f3; 
373		-moz-border-radius: 0 100px 100px 0; 
374		-webkit-border-radius: 0 100px 100px 0; 
375		border-radius: 100px 0 0 100px; 
376		display: flex; 
377		align-items: center; 
378		justify-content: center; 
379		cursor: point; 
380
381 
382	.iconCloseDetailLeaderPopup{ 
383		cursor: point; 
384
385 
386	@media only screen and (max-width: 994px){ 
387		.containerLeadersAbout{ 
388			flex: 0 0 33%; 
389
390
391 
392	@media only screen and (max-width: 600px){ 
393		.containerLeadersAbout{ 
394			flex: 0 0 100%; 
395
396 
397		.containerInfoLeaderAbout p{ 
398			font-size: 18px; 
399			text-align: center; 
400
401 
402		.containerInfoLeaderAbout{ 
403			padding-left: 0px; 
404
405 
406		.containerMeetOurGlobalLeadershipLeaderHome{ 
407			padding:0px 15px 20px; 
408 
409
410 
411		.containerLeaderAboutPopup{ 
412			top: 45px!important; 
413			bottom: 0%!important; 
414			left: 0%!important; 
415			right: 0%!important; 
416
417 
418		.rowFlexLeaderCenterAboutPopup{ 
419			background: none!important; 
420
421 
422		.col-md-3.flexLeaderCenterAboutPopup.addrsLeaderAboutPopup{ 
423			display: none; 
424
425		 
426		.nameLeaderAboutPopup{ 
427			//margin-top: 1.8em; 
428
429		 
430		.spanCloseDetailLeaderPopup.neo-hover{ 
431			//margin-top: 1em; 
432
433		 
434		.descriptionLeaderAboutPopup { 
435			padding:10px; 
436			font-size: 12px; 
437
438		 
439		.jobLeaderAboutPopup { 
440			padding-left:10px; 
441			padding-bottom: 5px; 
442
443		 
444		.nameLeaderAboutPopup { 
445			padding-left:10px; 
446
447
448</style> 
449 
450<script> 
451    if (typeof leaders !== 'undefined') { 
452        <#list homeLeaders as leader> 
453            <#assign nameLeader = leader.Name?replace(' ', '_') /> 
454            <#assign nameLeader = nameLeader?replace('\"', '_') /> 
455            leaders.push('${nameLeader}'); 
456        </#list> 
457    } else { 
458        var leaders = []; 
459        <#list homeLeaders as leader> 
460            <#assign nameLeader = leader.Name?replace(' ', '_') /> 
461            <#assign nameLeader = nameLeader?replace('\"', '_') /> 
462            leaders.push('${nameLeader}'); 
463        </#list> 
464
465    
466    var sizeLeaders = leaders.length; 
467    var currentLeader; 
468    var indexLeader; 
469     
470    function showPopup(nameLeader) { 
471        currentLeader = nameLeader; 
472        var popup = document.getElementById(nameLeader); 
473        popup.classList.toggle("show"); 
474         
475        if (currentLeader == leaders[0]) { 
476             document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "none"; 
477        } else { 
478             document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "flex"; 
479
480         
481        if (currentLeader == leaders[leaders.length -1]) { 
482             document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "none"; 
483        } else { 
484             document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "flex"; 
485        }   
486
487 
488    function closePopup(nameLeader) { 
489        var popup = document.getElementById(nameLeader); 
490        popup.classList.remove("show"); 
491        popup.classList.remove("showWithoutTime"); 
492
493     
494    function beforeLeaderPopup() { 
495        leaders.forEach(function(leader, index) { 
496            if(leader == currentLeader){ 
497                indexLeader = index-1; 
498
499        }); 
500        closePopup(currentLeader); 
501        currentLeader = leaders[indexLeader]; 
502        var popupNext = document.getElementById(leaders[indexLeader]); 
503        popupNext.classList.toggle("showWithoutTime"); 
504        if (currentLeader == leaders[0]) { 
505             document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "none"; 
506        } else { 
507             document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "flex"; 
508
509         
510        if (currentLeader == leaders[leaders.length -1]) { 
511             document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "none"; 
512        } else { 
513             document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "flex"; 
514
515
516     
517    function afterLeaderPopup() { 
518        leaders.forEach(function(leader, index) { 
519            if(leader == currentLeader){ 
520                indexLeader = index+1; 
521
522        }); 
523        closePopup(currentLeader); 
524        currentLeader = leaders[indexLeader]; 
525        var popupNext = document.getElementById(leaders[indexLeader]); 
526        popupNext.classList.toggle("showWithoutTime"); 
527        if (currentLeader == leaders[0]) { 
528             document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "none"; 
529        } else { 
530             document.getElementById("beforeLeaderAbout_"+currentLeader).style.display = "flex"; 
531
532         
533        if (currentLeader == leaders[leaders.length -1]) { 
534             document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "none"; 
535        } else { 
536             document.getElementById("afterLeaderAbout_"+currentLeader).style.display = "flex"; 
537
538    }   
539</script> 
540 
541 
542<div id="leaders-adt" class="neo-main-width"  style="padding: 10px 0 10px 0; 
543													margin-bottom: 20px!important;">    
544    <div class="containerMeetOurGlobalLeadershipLeaderHome"> 
545        <@web_content_display instance_id ="meetOurGlobalLeadershipTeam-78as8" /> 
546    </div> 
547    <div class="row rowContainerLeadersAbout"> 
548        <#list homeLeaders as leader>	 
549			<div class="col-md-2 col-xs-12" style="padding-left:15px!important; cursor:pointer; margin-bottom:20px;"> 
550				<@printLeader leader=leader /> 
551			</div>			 
552		</#list> 
553    </div> 
554    <div class="containerButtonLeaderHome"> 
555        <@web_content_display instance_id ="meetTheTeam-87ljj" /> 
556    </div> 
557</div> 
558 
559<#macro printLeader leader> 
560    <#assign nameLeader = leader.Name?replace(' ', '_') /> 
561	<#assign nameLeader = nameLeader?replace('\"', '_') /> 
562	<div onclick="showPopup('${nameLeader}')" > 
563		<div class="containerInfoLeaderAbout"> 
564 
565			<#assign leaderImage = "" />	                 
566            <#assign defImage = jsonFactoryUtil.createJSONObject(leader.Photo) /> 
567			<#assign imageUUID = defImage.getString("uuid") /> 
568				<#assign imageGroupID = defImage.getInt("groupId") /> 
569				<#assign imageFolderID =0 /> 
570				<#if imageUUID!=""> 
571				<#assign imageFolderID = DLFileEntryLocalService.fetchFileEntry(imageUUID,imageGroupID).getFolderId() /> 
572				<#assign leaderImage = "/documents/" + imageGroupID + "/" + imageFolderID + "/" +defImage.getString("title") + "/" + imageUUID /> 
573			</#if> 
574            <img class="" src='${leaderImage}' style="display:none;"> 
575			<p>${leader.Name}</p><!--OCA--> 
576			<p>${leader.Job}</p> 
577			<p>${leader.Office}</p> 
578		</div> 
579	</div> 
580	 
581	<div id="${nameLeader}" class="popuptext"> 
582		<div class="containerLeaderAboutPopup spacingMarginEvent speakerEvent backgroundOpacitySpeakerDetail" > 
583			<span class="spanCloseDetailLeaderPopup neo-hover"><i onclick="closePopup('${nameLeader}')"  id="iconCloseDetailLeaderPopup" class="iconCloseDetailLeaderPopup icon-remove"></i></span> 
584			 
585			<#assign beforeLeaderAbout = "beforeLeaderAbout_" + nameLeader /> 
586			<#assign afterLeaderAbout = "afterLeaderAbout_" + nameLeader /> 
587			 
588			<div class="containerBeforeLeaderAbout neo-hover"> 
589				<div onclick="beforeLeaderPopup()" id="${beforeLeaderAbout}" class="beforeLeaderAbout"><i class="icon-chevron-left"></i></div> 
590			</div> 
591			<div class="containerAfterLeaderAbout neo-hover"> 
592				<div onclick="afterLeaderPopup()" id="${afterLeaderAbout}" class="afterLeaderAbout"><i class="icon-chevron-right"></i></div> 
593			</div> 
594			 
595			<div class="row rowFlexLeaderCenterAboutPopup" style="background: url('${watermarkMap}')"> 
596				<div class="col-md-12 flexLeaderCenterAbout"> 
597					<p class="nameLeaderAboutPopup">${leader.Name}</p> 
598					<p class="jobLeaderAboutPopup">${leader.Job}</p> 
599					<p class="descriptionLeaderAboutPopup">${leader.Description}</p> 
600				</div> 
601			</div> 
602		</div> 
603	</div> 
604</#macro> 
605 
606<#function initializeVariables rootElement variables> 
607    <#assign values = {} /> 
608    <#list variables as key> 
609        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${key}']") /> 
610        <#assign value = [] /> 
611        <#if xPathSelector.selectSingleNode(rootElement)??> 
612            <#assign nodes = xPathSelector.selectNodes(rootElement) /> 
613            <#if nodes?size &gt; 1> 
614                <#list nodes as node> 
615                    <#assign value = value + [node]> 
616                </#list> 
617            <#else> 
618                <#assign value = [xPathSelector.selectSingleNode(rootElement)] /> 
619            </#if> 
620        <#else> 
621            <#assign value = [] /> 
622        </#if> 
623        <#assign values = values + {"${key}" : value} />  
624    </#list> 
625    <#return values /> 
626</#function> 
627 
628<#function extractStringValue node language> 
629	<#if node?? && node?is_hash> 
630        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content[@language-id='${language}']/text()") /> 
631		<#assign string = xPathSelector.selectSingleNode(node)!"null" /> 
632		<#if !string?? || string == "null"> 
633			<#assign xPathSelector = saxReaderUtil.createXPath("dynamic-content/text()']/text()") /> 
634			<#assign string = xPathSelector.selectSingleNode(node)!"null" /> 
635		</#if> 
636		<#return string.getStringValue() /> 
637	<#else> 
638		<#return "null" /> 
639	</#if> 
640</#function> 
641 
642 
643<!-- !!!!!!!!!!!!!!!!!!!MACRO EMBEBER!!!!!!!!!!!!!!!!!!!!!! --> 
644<#macro web_content_display default_preferences = "" instance_id = "" defaultDecorator = "UNSET" > <#attempt> <#assign  VOID = freeMarkerPortletPreferences.setValue("groupId", themeDisplay.getScopeGroupId()?string) VOID = freeMarkerPortletPreferences.setValue("portletSetupPortletDecoratorId", (defaultDecorator != "UNSET")?then(defaultDecorator,"barebone")) VOID = freeMarkerPortletPreferences.setValue("articleId", setting) IID = "rID" + instance_id />  <!-- ${IID} --> <@liferay_portlet["runtime"] defaultPreferences=freeMarkerPortletPreferences.toString() portletProviderAction=portletProviderAction.VIEW instanceId=IID portletName="com_liferay_journal_content_web_portlet_JournalContentPortlet" />  <#assign VOID = freeMarkerPortletPreferences.reset()>	 <#recover> <!-- Could not embed web content display: ${instance_id} --> </#attempt> </#macro> 
Asset Publisher
Asset Publisher
AI Download
Enterprise BI