Dia Internacional Contra a Corrupção: nossos executivos lembram a importância do tema
A+ A-
contrast
Sluiten
recent-searches
Snelle links
U hebt niet de vereiste rollen voor toegang tot deze portlet.
U hebt niet de vereiste rollen voor toegang tot deze portlet.
Corruption is a crime and fighting this illegal practice is still a global challenge. International Anti-Corruption Day is held every year on December 9 to raise awareness of the importance of fighting corruption as part of efforts to build a build a fairer and more equal society.
We spoke to some of our leaders about our company’s anti-corruption commitment. Read on to see what we have been doing about this issue.
We spoke to some of our leaders about our company’s anti-corruption commitment. Read on to see what we have been doing about this issue.
How is the commitment to fighting corruption linked to our company’s strategy?
This connection starts when we think about what is behind our strategy. We want to build a better Vale. We want to be a leader in creating and sharing value, not only with our investors but the whole of society. All this requires us to take responsibility in the fight against corruption. Our commitment to fighting corruption is part of our ethical principles and also our ESG [environmental, social and governance] agenda. Through more and more transparency and solid governance, we are contributing to this global agenda, which matters to each of us as citizens.”
José Luciano Duarte Penido
Vale's Chairman
José Luciano Duarte Penido
Vale's Chairman
Does fighting corruption also mean putting our purpose into practice?
Without a doubt. How are we going to transform the future if we don’t fight a crime that diverts resources that could otherwise be used to improve the health, safety and education of our society? This is our basic commitment and it cannot be otherwise. When we act with integrity, we cannot tolerate any unfair way of doing business. At our company, there is no room for any kind of corruption or bribery. This depends on each one of us, starting with leaders, who must set an example. We must always put ethics, our values and our purpose into practice in every decision we make.”
Eduardo Bartolomeo
Vale's CEO
Eduardo Bartolomeo
Vale's CEO
In 2022, we saw many cases of corruption, some involving companies in the mining sector. How is our company evolving in managing this risk?
Fighting corruption is one of the challenges that guides our Ethics & Compliance Program. Since the program was launched in March 2021, we have made significant progress in managing the risk of corruption. We have implemented new controls and tests and we are automating some deviation detection processes. All of this is about compliance, enforcing the rules. However, we believe there is something bigger than that: ethics. Fighting corruption depends on the individual behavior of everyone who makes up Vale. That is why we are also investing in communication actions and training on this topic, such as the Anti-Corruption Course that we launched this year during Ethics Week. We need to be trained and aligned with the values of our company. That is how we will make decisions ethically and responsibly to fight against corruption.”
Denis Cuenca
Vale’s Chief Audit and Compliance Officer
Denis Cuenca
Vale’s Chief Audit and Compliance Officer
Er trad een fout op tijdens de verwerking van de sjabloon.
Syntax error in template "44549#44620#460359" in line 28, column 59: 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 28, column 45 by token "has_content", but the problematic token, "newsTopicCategory", uses a different convention.
1<#assign
2 images_path = "/documents/d/guest/"
3 namespace = "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_" + stringUtil.randomId()
4/>
5
6<#attempt>
7 <#assign newsTopicVocabularyId = 64872 />
8<#recover>
9 <#assign newsTopicVocabularyId = 0 />
10</#attempt>
11
12<#function getDisplayPageUrl asset>
13 <#local
14 assetRenderer = asset.getAssetRenderer()
15 baseViewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, asset, !stringUtil.equals(assetLinkBehavior, "showFullContent"))?split("?")?first?split("/-/")?first
16 />
17 <#return baseViewURL?replace(themeDisplay.getURLPortal(), "")/>
18</#function>
19
20<#function getCategoryFilterEndpoint asset>
21 <#attempt>
22 <!-- <#local
23 newsTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == newsTopicVocabularyId)?first
24 newsTopicCategoryId = newsTopicCategory.getCategoryId()
25 /> -->
26 <#local
27 newsTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == newsTopicVocabularyId)?first!null
28 newsTopicCategoryId = newsTopicCategory?has_content ? newsTopicCategory.getCategoryId() : null
29 />
30 <#recover>
31 <#assign newsTopicCategoryId = 0 />
32 </#attempt>
33 <#return "/-/categories/" + newsTopicCategoryId />
34</#function>
35
36<#function getDDMFormFieldsValue DDMFormFieldsReferencesMap DDMFormFieldValuesMap fieldReference>
37 <#local field = DDMFormFieldsReferencesMap[fieldReference].name />
38 <#return DDMFormFieldValuesMap[field][0].getValue().getString(locale)!"" />
39</#function>
40
41<#function getCustomDisplayPageDataAttr customDisplayPageJson categoryFilterEndpoint>
42 <#local
43 groupId = customDisplayPageJson.getLong("groupId")
44 uuid = customDisplayPageJson.getString("id")
45 privateLayout = customDisplayPageJson.getBoolean("privateLayout")
46 />
47 <#local customDisplayPageDataAttr>
48 data-vale-custom-display-page='{"groupId":${groupId},"uuid":"${uuid}","privateLayout":${privateLayout?c}}'
49 data-vale-category-endpoint=${categoryFilterEndpoint}
50 </#local>
51 <#return customDisplayPageDataAttr/>
52</#function>
53
54<section class="vale-widget-noticias-relacionadas bg-verde-vale" id="vale-widget-noticias-relacionadas-${namespace}">
55 <div class="fragment-container overflow-hidden">
56 <div class="container">
57 <div class="titulo d-flex justify-content-between mt-7 mb-5">
58 <h2 class="text-amarelo-vale">
59 <@liferay.language key="related-news" />
60 </h2>
61 <div class="d-none d-md-flex align-self-center justify-content-end">
62 <img
63 class="${namespace} carrossel-card-branco-categoria-button-prev btn btn-primary border-amarelo-vale bg-amarelo-vale mr-3 p-1 rounded-circle"
64 src="${images_path}seta-2-esq_bra"
65 alt="button-prev"
66 loading="lazy"
67 />
68 <img
69 class="${namespace} carrossel-card-branco-categoria-button-next btn btn-primary border-amarelo-vale bg-amarelo-vale p-1 rounded-circle"
70 src="${images_path}seta-2-dir_bra"
71 alt="button-next"
72 loading="lazy"
73 />
74 </div>
75 </div>
76 <div class="swiper ${namespace} carrossel-card-branco-categoria">
77 <div class="swiper-wrapper mb-sm-6">
78 <#if entries?has_content>
79 <#list entries as curEntry>
80 <#assign
81 assetRenderer = curEntry.getAssetRenderer()
82 article = assetRenderer.getArticle()
83
84 categoryFilterEndpoint = getCategoryFilterEndpoint(curEntry)
85
86 DDMFormFieldValuesMap = assetRenderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()
87 DDMFormFieldsReferencesMap = assetRenderer.article.DDMStructure.DDMForm.getDDMFormFieldsReferencesMap(true)
88
89 customDisplayPageJsonString = getDDMFormFieldsValue(DDMFormFieldsReferencesMap, DDMFormFieldValuesMap, "customDisplayPage")
90 customDisplayPageJson = jsonFactoryUtil.createJSONObject(customDisplayPageJsonString)
91
92 hasCustomDisplayPage = customDisplayPageJson.getString("groupId")?has_content
93 customDisplayPageDataAttr = hasCustomDisplayPage?then(
94 getCustomDisplayPageDataAttr(customDisplayPageJson, categoryFilterEndpoint), "")
95
96 displayPageUrl = getDisplayPageUrl(curEntry) + categoryFilterEndpoint
97 />
98 <div class="swiper-slide">
99 <a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}>
100 <div class="box d-flex flex-column justify-content-between p-3">
101 <div>
102 <p class="text-amarelo-vale mb-2">
103 <#assign categories = curEntry.getCategories() />
104 <#list categories as category>
105 <#if category.vocabularyId == newsTopicVocabularyId>
106 ${category.name}
107 <#break>
108 </#if>
109 </#list>
110 </p>
111 <p class="text-verde-aqua">
112 ${curEntry.getTitle(locale)}
113 </p>
114 </div>
115 <p class="text-cinza-escuro m-0">
116 <#assign dataField = DDMFormFieldsReferencesMap['data'].name />
117 <#assign data = DDMFormFieldValuesMap[dataField][0].getValue().getString(locale) />
118 <#assign date_localized = dateUtil.formatDate("yyyy-MM-dd", data, locale)/>
119
120 ${date_localized}
121 </p>
122 <img
123 class="onda position-absolute"
124 src="${images_path}onda_verde"
125 loading="lazy"
126 />
127 </div>
128 </a>
129 </div>
130 </#list>
131 </#if>
132 </div>
133 </div>
134 <a
135 class="bg-amarelo-vale border-amarelo-vale btn btn-nm btn-primary mb-6"
136 href="${(locale == 'pt_BR')?then('/todas-as-noticias','/all-then-news')}"
137 target="_blank"
138 >
139 <@liferay.language key="access-all-news" />
140 </a>
141 </div>
142 </div>
143</section>
144
145<style>
146.vale-widget-noticias-relacionadas .onda {
147 position: absolute;
148 bottom: 1.875rem;
149 right: -0.125rem;
150}
151
152.vale-widget-noticias-relacionadas .box {
153 background-color: var(--branco);
154 border-left: 10px solid var(--amarelo-vale);
155 height: 14.6875rem;
156 margin-bottom: 2rem;
157}
158
159.vale-widget-noticias-relacionadas p {
160 display: -webkit-box;
161 line-clamp: 4;
162 overflow: hidden;
163 -webkit-line-clamp: 4;
164 -webkit-box-orient: vertical;
165}
166
167@media screen and (min-width: 768px) {
168 .vale-widget-noticias-relacionadas .box {
169 border-left: 20px solid var(--amarelo-vale);
170 height: 11.875rem;
171 }
172
173 .vale-widget-noticias-relacionadas p {
174 line-clamp: 3;
175 -webkit-line-clamp: 3;
176 }
177}
178
179.vale-widget-noticias-relacionadas .container {
180 overflow: visible;
181}
182
183.vale-widget-noticias-relacionadas .swiper {
184 overflow: visible;
185}
186
187.vale-widget-noticias-relacionadas .swiper-slide {
188 width: auto;
189}
190
191</style>
192
193<script>
194(function(){
195
196var swiper = new Swiper(".${namespace}.carrossel-card-branco-categoria", {
197 slidesPerView: 1,
198 spaceBetween: 32,
199 navigation: {
200 nextEl: ".${namespace}.carrossel-card-branco-categoria-button-next",
201 prevEl: ".${namespace}.carrossel-card-branco-categoria-button-prev",
202 disabledClass: "disabled",
203 navigationDisabledClass: "disabled",
204 },
205 pagination: {
206 clickable: true,
207 },
208 slideClass: "swiper-slide",
209 breakpoints: {
210 768: {
211 slidesPerView: 2,
212 },
213 1024: {
214 slidesPerView: 3,
215 },
216 },
217});
218
219 // Tagueamento
220
221 const namespace = document.querySelector("#vale-widget-noticias-relacionadas-${namespace}");
222
223 const section = namespace.querySelector("h2").innerText;
224
225 const links = namespace.querySelectorAll("a");
226
227 const handleEventLinkClick = (title, href) => {
228 Analytics.track("Link", {
229 section: section,
230 rotulo: title + " : " + href,
231 });
232 };
233
234 links.forEach(link => {
235 const text = link.querySelector('p.text-verde-vale');
236 const title = text ? text.innerText : '';
237 link.addEventListener("click", () => handleEventLinkClick(title, link.href))
238 })
239
240 // Configurar URL de página de exibição dinâmica
241 const displayPageUrls = namespace.querySelectorAll('a[data-vale-custom-display-page]');
242 displayPageUrls.forEach(displayPageUrl => {
243 const customDisplayPage = displayPageUrl.dataset["valeCustomDisplayPage"];
244 const categoryEndpoint = displayPageUrl.dataset["valeCategoryEndpoint"];
245 Liferay.Service(
246 '/layout/get-layout-by-uuid-and-group-id',
247 JSON.parse(customDisplayPage),
248 layout => {
249 const friendlyURL = layout["friendlyURL"];
250 if (friendlyURL) {
251 displayPageUrl.href = friendlyURL + categoryEndpoint;
252 }
253 }
254 );
255 })
256})()
257
258</script>