Pessoal, boa tarde!
Já precisaram fazer algum tipo de intervenção ou manipulação em alguma widget padrão do Fluig sem clonar o componente? Quero ocultar um botão da central de tarefas - pensei na possibilidade de uma widget ‘invisível’ que navega no DOM e consegue interagir onde preciso. Acham possível?
O que já fiz foi fazer o header customizado que o Fluig permite com o custompage. Aí nele coloquei um JS que, de acordo com a URL, executava alguma coisa.
Fiz isso quando precisei que dar mais opções de itens por página no GED, já que só permitia 100 e aqui precisávamos de 1000 em algumas situações.
https://tdn.totvs.com/pages/releaseview.action?pageId=232816834
1 curtida
Sagaz, @Bruno_Gasparetto !! Muito obrigado! Quando acabar vou postar aqui o código.
@Bruno_Gasparetto , seguindo a dica, criei meu custompagehead.ftl - não está completo e polido mas a ideia toda está aqui - ocultar um botão baseado no grupo do usuário:
<script>
$(function() {
const roleFornecedor = '036'; // Role de fornecedor
// ELMINAR BOTÃO DE INICIAR NOVA SOLICITAÇÃO QUANDO FORNECEDOR LOGADO
// verifica se usuário está na central de tarefas OU se está com uma widget que contenha o componente da central de tarefas padrão
if (!location.href.includes('/pagecentraltask') || !$("#ecm-centralTask-container").length) {
return;
} else {
this.getCurrentUserInfo(() => {
if (this.currentUserRoles.includes(roleFornecedor)) {
// Se o usuário for fornecedor, remove o botão de iniciar nova solicitação
// Remove o botão de iniciar nova solicitação e toda a div
$('#divNewRequest').remove();
}
});
}
});
/**
* Obtém informações do usuário atual
* @function getCurrentUserInfo
* @param {Function} callback - Função de callback a ser executada após obter as informações
* @description Recupera o login e roles do usuário atual através da API do Fluig.
* Define roles padrão em caso de erro.
*/
getCurrentUserInfo: function(callback) {
const that = this;
try {
this.currentUserLogin = WCMAPI.getUserLogin();
console.log('Current user login:', this.currentUserLogin);
FLUIGC.ajax({
url: '/ecm/api/rest/ecm/user/get/' + this.currentUserLogin,
type: 'GET'
}, (err, data) => {
if (!err && data) {
that.currentUserRoles = data.roles || [];
console.log('Current user roles:', that.currentUserRoles);
} else {
console.error('Error getting user roles:', err);
that.currentUserRoles = ['user'];
}
if (callback) {
callback();
}
});
} catch (error) {
console.error('Error getting user info:', error);
this.currentUserRoles = ['user'];
if (callback) {
callback();
}
}
},
</script>
Uma das coisas que preciso terminar é a questão de aguardar o render para só depois executar as ações. Mas a ideia tá aí. Muito obrigado!
1 curtida
Outra coisa é salvar um cache disso usando sessionStorage (acho que localStorage seria demais) ou cache mesmo, só pra não ficar fazendo consulta ajax em toda vez que entrar na central de tarefas.
1 curtida