Fechar

Funcionária da Vale sorrindo em paisagem verde. Ela veste uniforme verde
da vale, oculos, capacete e protetores auriculares Artefato visual de onda Vale
Imagem de header interno Imagem de header interno
Um erro ocorreu enquanto processava o modelo.
Syntax error in template "44549#44620#98608" in line 54, column 63:
Naming convention mismatch. Identifiers that are part of the template language (not the user specified ones) must consistently use the same naming convention within the same template. This template uses legacy naming convention (directive (tag) names are like examplename, everything else is like example_name) estabilished by auto-detection at line 54, column 49 by token "has_content", but the problematic token, "newsTopicCategory", uses a different convention.
1<#if entry??> 
2	<#assign 
3			images_path = "/documents/d/guest/" 
4			namespace = "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_" + stringUtil.randomId() 
5   /> 
6	  
7	 <#attempt> 
8	 <#assign newsTopicVocabularyId = 64872 /> 
9	 <#recover> 
10     <#assign newsTopicVocabularyId = 0 /> 
11   </#attempt> 
12 
13	 
14	<#function getDisplayPageUrl asset> 
15			<#local 
16					assetRenderer = asset.getAssetRenderer() 
17					baseViewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, asset, !stringUtil.equals(assetLinkBehavior, "showFullContent"))?split("?")?first?split("/-/")?first 
18			/> 
19			<#return baseViewURL?replace(themeDisplay.getURLPortal(), "")/> 
20	</#function> 
21 
22	<#function getDDMFormFieldsReferencesMap entry > 
23			<#assign assetRenderer = entry.getAssetRenderer() /> 
24			<#assign DDMFormFieldValuesMap = assetRenderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap() /> 
25			<#return assetRenderer.article.DDMStructure.DDMForm.getDDMFormFieldsReferencesMap(true) /> 
26	</#function> 
27 
28	<#function getDDMFieldValue DDMFormFieldsReferencesMap name> 
29			<#assign field = DDMFormFieldsReferencesMap[name].name /> 
30			<#return DDMFormFieldValuesMap[field][0].getValue().getString(locale)!"" /> 
31	</#function> 
32 
33	<#function getCustomDisplayPageDataAttr customDisplayPageJson categoryFilterEndpoint> 
34			<#local 
35					groupId = customDisplayPageJson.getLong("groupId") 
36					uuid = customDisplayPageJson.getString("id") 
37					privateLayout = customDisplayPageJson.getBoolean("privateLayout") 
38			/> 
39			<#local customDisplayPageDataAttr> 
40					data-vale-custom-display-page='{"groupId":${groupId},"uuid":"${uuid}","privateLayout":${privateLayout?c}}' 
41					data-vale-category-endpoint=${categoryFilterEndpoint} 
42			</#local> 
43			<#return customDisplayPageDataAttr/> 
44	</#function> 
45 
46	<#function getCategoryFilterEndpoint asset> 
47		<#attempt> 
48		<!--	<#local 
49					newsTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == newsTopicVocabularyId)?first 
50					newsTopicCategoryId = newsTopicCategory.getCategoryId() 
51			/> --> 
52			<#local 
53        newsTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == newsTopicVocabularyId)?first!null 
54        newsTopicCategoryId = newsTopicCategory?has_content ? newsTopicCategory.getCategoryId() : null 
55      /> 
56			<#recover> 
57				<#assign newsTopicCategoryId = 0 /> 
58			</#attempt> 
59			<#return  "/-/categories/" + newsTopicCategoryId /> 
60	</#function> 
61 
62	<#assign assetRenderer=entry.getAssetRenderer()!"" /> 
63	<#if assetRenderer?has_content> 
64		<#assign 
65				article = assetRenderer.getArticle() 
66 
67				categoryFilterEndpoint = getCategoryFilterEndpoint(entry) 
68 
69				DDMFormFieldsReferencesMap = getDDMFormFieldsReferencesMap(entry) 
70				img = jsonFactoryUtil.createJSONObject(getDDMFieldValue(DDMFormFieldsReferencesMap, 'imagemDeCapa')) 
71 
72				customDisplayPageJsonString = getDDMFieldValue(DDMFormFieldsReferencesMap, "customDisplayPage") 
73				customDisplayPageJson = jsonFactoryUtil.createJSONObject(customDisplayPageJsonString) 
74 
75				hasCustomDisplayPage = customDisplayPageJson.getString("groupId")?has_content 
76				customDisplayPageDataAttr = hasCustomDisplayPage?then( 
77						getCustomDisplayPageDataAttr(customDisplayPageJson, categoryFilterEndpoint), "") 
78 
79				displayPageUrl = getDisplayPageUrl(entry) + categoryFilterEndpoint 
80		/> 
81 
82		<#assign search_page_endpoint = locale?contains("en")?then("all-the-news", "todas-as-noticias") /> 
83 
84		<#assign accessAllNews = ""> 
85		<#if locale?contains("en")> 
86			<#assign accessAllNews = "Access all news"> 
87		<#else> 
88			<#assign accessAllNews = "Acesse todas as notícias"> 
89		</#if> 
90 
91		<div class="vale-widget-ultimas-noticias container" id="vale-fragmento-carrossel-card-branco-categoria-${namespace}"> 
92				<div class="row mt-7"> 
93						<div class="col-12 col-md-8 mb-7 mb-md-0 pr-4" id="news-card"> 
94								<div class="mb-4 position-relative"> 
95										<a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}> 
96												<img 
97														alt="${img.alt}" 
98														class="imagem-capa-principal" 
99														data-fileentryid="${img.fileEntryId}" 
100														src="${img.url}" 
101												/> 
102												<img 
103														class="onda-principal d-none d-md-block position-absolute" 
104														src="${images_path}onda_branca" 
105												/> 
106										</a> 
107								</div> 
108 
109								<p> 
110										<#assign data = getDDMFieldValue(DDMFormFieldsReferencesMap, 'data') /> 
111										<#assign date_localized = dateUtil.formatDate("yyyy-MM-dd", data, locale)/> 
112 
113										${date_localized} 
114								</p> 
115 
116								<a href="${displayPageUrl}" class="text-decoration-none mb-4" ${customDisplayPageDataAttr}> 
117										<h2 class="text-verde-vale"> 
118												${entry.getTitle(locale)} 
119										</h2> 
120								</a> 
121						</div> 
122						<div class="coluna-direita-noticias col-12 col-md-4 d-flex flex-column"> 
123								<#if entries?has_content> 
124										<#list entries as curEntry> 
125												<#if entry.getTitle(locale) != curEntry.getTitle(locale) > 
126														<#assign 
127																assetRenderer = curEntry.getAssetRenderer() 
128																article = assetRenderer.getArticle() 
129 
130																categoryFilterEndpoint = getCategoryFilterEndpoint(curEntry) 
131 
132																DDMFormFieldsReferencesMap = getDDMFormFieldsReferencesMap(curEntry) 
133																img = jsonFactoryUtil.createJSONObject(getDDMFieldValue(DDMFormFieldsReferencesMap, 'imagemDeCapa')) 
134 
135																customDisplayPageJsonString = getDDMFieldValue(DDMFormFieldsReferencesMap, "customDisplayPage") 
136																customDisplayPageJson = jsonFactoryUtil.createJSONObject(customDisplayPageJsonString) 
137 
138																hasCustomDisplayPage = customDisplayPageJson.getString("groupId")?has_content 
139																customDisplayPageDataAttr = hasCustomDisplayPage?then( 
140																		getCustomDisplayPageDataAttr(customDisplayPageJson, categoryFilterEndpoint), "") 
141 
142																displayPageUrl = getDisplayPageUrl(curEntry) + categoryFilterEndpoint 
143														/> 
144														<div class="font-weight-light mb-5" id="news-card"> 
145																<div class="mb-4 position-relative"> 
146																		<a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}> 
147																				<img 
148																						alt="${img.alt}" 
149																						class="imagem-capa" 
150																						data-fileentryid="${img.fileEntryId}" 
151																						src="${img.url}" 
152																				/> 
153																				<img 
154																						class="onda position-absolute" 
155																						src="${images_path}onda_branca" 
156																				/> 
157																		</a> 
158																</div> 
159 
160																<p class="mb-2"> 
161																		<#assign data = getDDMFieldValue(DDMFormFieldsReferencesMap, 'data') /> 
162																		<#assign date_localized = dateUtil.formatDate("yyyy-MM-dd", data, locale)/> 
163 
164																		${date_localized} 
165																</p> 
166 
167																<a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}> 
168																		<h4 class="mb-0 text-verde-vale"> 
169																				${curEntry.getTitle(locale)} 
170																		</h4> 
171																</a> 
172														</div> 
173												</#if> 
174										</#list> 
175								</#if> 
176						</div> 
177			</div> 
178		</div> 
179 
180		<style> 
181		.vale-widget-ultimas-noticias .imagem-capa-principal { 
182				object-fit: cover; 
183
184 
185		.vale-widget-ultimas-noticias .imagem-capa { 
186				border-left: 20px solid var(--amarelo-vale); 
187				height: 13.75rem; 
188				width: 100%; 
189				object-fit: cover; 
190
191 
192		.vale-widget-ultimas-noticias .onda-principal { 
193				bottom: -0.125rem; 
194				right: -0.125rem; 
195
196 
197		.vale-widget-ultimas-noticias .onda { 
198				bottom: -0.125rem; 
199				right: -0.125rem; 
200
201 
202		.vale-widget-ultimas-noticias .width-16 { 
203				width: 16rem; 
204
205 
206		@media screen and (max-width: 768px) { 
207				.vale-widget-ultimas-noticias .imagem-capa-principal { 
208						height: 16.0625rem; 
209						width: 100vw; 
210						position: relative; 
211						left: 50%; 
212						margin-left: -50vw; 
213
214 
215				.vale-widget-ultimas-noticias .imagem-capa { 
216						border-left: 10px solid var(--amarelo-vale); 
217
218
219 
220		@media screen and (min-width: 768px) { 
221				.vale-widget-ultimas-noticias .imagem-capa-principal { 
222						border-left: 20px solid var(--amarelo-vale); 
223						height: 29.1875rem; 
224						width: 100%; 
225
226 
227				.vale-widget-ultimas-noticias .coluna-direita-noticias { 
228						max-height:  55.875rem; 
229						overflow-y: auto; 
230
231
232		</style> 
233 
234		<script> 
235		(function(){ 
236			// Tagueamento 
237				const namespace = document.querySelector("#vale-fragmento-carrossel-card-branco-categoria-${namespace}"); 
238 
239				const cards = namespace.querySelectorAll("#news-card"); 
240 
241				const handleEventLinkClick = (title, href) => { 
242						Analytics.track("Link", { 
243								section: "Últimas notícias", 
244								rotulo: title + " : " + href, 
245					}); 
246				}; 
247 
248				cards.forEach(card => { 
249						const links =  card.querySelectorAll("a"); 
250						const title = card.querySelectorAll("h2, h4, .h2, .h4")[0].innerText; 
251						links.forEach(link => { 
252								link.addEventListener("click", () => handleEventLinkClick(title, link.href)) 
253						}) 
254				}) 
255 
256				// Configurar URL de página de exibição dinâmica 
257				const displayPageUrls = namespace.querySelectorAll('a[data-vale-custom-display-page]'); 
258				displayPageUrls.forEach(displayPageUrl => { 
259						const customDisplayPage = displayPageUrl.dataset["valeCustomDisplayPage"]; 
260						const categoryEndpoint = displayPageUrl.dataset["valeCategoryEndpoint"]; 
261						Liferay.Service( 
262								'/layout/get-layout-by-uuid-and-group-id', 
263								JSON.parse(customDisplayPage), 
264								layout => { 
265										const friendlyURL = layout["friendlyURL"]; 
266										if (friendlyURL) { 
267												displayPageUrl.href = friendlyURL + categoryEndpoint; 
268
269
270						); 
271				}) 
272		})() 
273		</script> 
274	</#if> 
275</#if> 

Notícias

Garson Mine Group Photo

Family Ties and Changing Times at Garson Mine

For four father-daughter duos at Garson Mine, mining is more than a job – it’s the family business.

 
Artefato visual de onda Vale
Danielle Robb

Mês da História Negra: Danielle Robb encontra sua vocação

Danielle Robb, operadora de mecânica na fundição de cobre Copper Cliff, compartilha sua jornada profissional da academia à indústria.

 
Artefato visual de onda Vale
o Superintendente de Armazém de Operações de Ontário, Francis Osei-Bonsu, compartilha sua jornada da engenharia química à gestão da cadeia de suprimentos e tudo entre elas.

Mês da História Negra: O Céu é o Limite para Francis Osei-Bonsu

"Sempre faça o seu melhor:" Francis Osei-Bonsu nunca esquecerá as últimas palavras de sua mãe. Eles moldaram sua trajetória profissional.

 
Artefato visual de onda Vale
Damilola (Dami) Katibi

Mês da História Negra: Damilola Katibi Encontra a Função Certa

A história de Dami é a primeira de nossa série especial em homenagem ao Mês da História Negra.

 
Artefato visual de onda Vale
Spot new member Thompson Vale family

Veja Spot Correr: robô ágil é a nova aquisição da família Thompson

Spot é o mais novo membro robótico da família Vale Thompson

 
Artefato visual de onda Vale
PT Vale Celebrates 55th Anniversary

PT Vale Celebra o 55º Aniversário

A PT Vale Indonésia (PT Vale) recentemente celebrou seu 55º aniversário, realizando uma celebração incrível condizente com mais de meio século de operações na Indonésia

 
Artefato visual de onda Vale
Stacy Kennedy first female head Manitoba operations

Stacy Kennedy, a primeira mulher a chefiar as nossas operações em Manitoba, está vivendo a vida ao máximo

Stacy Kennedy foi nomeada Directora de Operações em Thompson, Manitoba, tornando-se a primeira mulher a ocupar este cargo

 
Artefato visual de onda Vale
Exibindo 1 para 7 de 7
Deslize a tela para ver mais

Imprensa

Exibindo 1 para 6 de 6
Deslize a tela para ver mais

É essencial que mantenhamos canais de diálogo abertos e transparentes.

Aqui você poderá encontrar todos os nossos canais de contato. Fique à vontade para escolher o que melhor se adapta às suas necessidades.