BUG: sc_field_display não funciona em Template HTML de login

Tenho um template HTML próprio o qual fui adequar para usar o novo módulo de segurança do SC. Segui todas as instruções na criação do template, porém os campos de IDIOMA, LEMBRAR-ME, NOVO USUÁRIO, etc, NÃO conseguem ser escondidos pela macro sc_field_display. Entrei em contato com o suporte o qual me passou este link como exemplo para esconder o campo RECUPERAR SENHA. Testei o que está no link mas igualmente não funcionou. Enviei para o bugs@netmake.com.br e o atendente não foi capaz de solucionar meu caso. Depois de vários emails (enviei inclusive meu template pra ele) ele me diz que a macro não funciona nesses casos. Então como resolver essa parada, pois os templates criados nos exemplos que vem com o SC funcionam normalmente?

Impressionante o nível de desconhecimento do suporte da NM… e aí @yuri_esteves? Alguma dica?

1 Curtida

@yuri_esteves, estou no aguardo… quero saber como se resolve isto!

1 Curtida

Constatei o problema.

Observação: O template vem de versões anteriores, mas a app de controle foi criada na nova versão mais recente do SC.

Notei que o JQUERY, carregado no template não é carregado realmente, causando erros na console.

1 Curtida

Continuo no aguardo. Quero saber o por que da macro sc_field_display não estar funcionando nesses campos.

1 Curtida

Boa tarde a todos,

Bem, diante da omissão por parte da NM em responder este tópico e a inapetência do suporte da NM em uma solução concreta, acabei tendo que descobrir, ainda que temporária, a solução, com a preciosa ajuda do mestre @InfinitusWeb, pois a macro sc_field_display de fato não funciona em form controle de login, usando template HTML próprio.
Em meu caso, eu tenho um HTML criado por mim, que me dá o seguinte aspecto no login:

Sempre usei este template e sempre funcionou normalmente. Com a implementação dos novos recursos no módulo de segurança, resolvi testar os novos recursos, usando o template que já uso. Logo após fazer os ajustes necessários no template (inserção e checagem dos campos obrigatórios, conforme figura abaixo), fui testar a aplicação login e na aplicação de Configurações desabilitei as opções Novo usuário e Idioma para que surtissem efeito no meu login.


Para minha surpresa, os campos continuaram aparecendo, sendo que no onLoad da controle tem estes comandos:

if([sett_new_users] != 'Y'){
    sc_field_display({new_user}, 'off');
}

if([sett_retrieve_password] != 'Y'){
    sc_field_display({retrieve_pswd}, 'off');
}
if([sett_language] != 'Y'){
    sc_field_display({language}, 'off');
}

Que não surtiram efeito algum na aplicação. Não importa o que se faça os campos continuam aparecendo, ou seja, a macro sc_field_display simplesmente não funciona. Foi-me apresentado o link https://help.scriptcase.net/portal/pt/kb/articles/esconder-mostrar-campo-recuperar-senha-na-tela-de-login-com-template-html que mostra como fazer para funcionar o que eu queria, mas de nada adiantou.
Com isto, pesquisando mais a fundo, conseguimos ver que:

  1. Quando você usa o seu template HTML no form controle, a opção de Javascript não aparece, conforme imagem abaixo. Creio que seja para que se use o JS que possa vir dentro do próprio template.
    image

  2. Mesmo que você inspecione o HTML gerado e tente dar um display: none nos elementos, de nada funciona.

  3. Para resolver a questão (friso que resolveu meu problema, mas é de forma temporária, pois o certo mesmo é a macro sc_field_display funcionar normalmente), fizemos a seguinte modificação no evento onLoad:

//if([sett_new_users] != 'Y'){
//    sc_field_display({new_user}, 'off');
//}
//if([sett_retrieve_password] != 'Y'){
//    sc_field_display({retrieve_pswd}, 'off');
//}
//if([sett_language] != 'Y'){
//    sc_field_display({language}, 'off');
//}
if(isset([sett_remember_me]) && [sett_remember_me] == 'Y'){
    remember_me_init();
}
//else{ 
//    sc_field_display({remember_me}, 'off');
//}
*/

$_sett_retrieve_password = [sett_retrieve_password];
$_sett_language = [sett_language];
$_sett_remember_me = [sett_remember_me];

echo <<<JS
<script>
sett_language = '$_sett_language';
sett_retrieve_password = '$_sett_retrieve_password';
sett_remember_me = '$_sett_remember_me';
</script>
JS;

E no HTML do meu template, tivemos que inserir isto, no final do body:

<script>
$( document ).ready(function() {
    //console.log(sett_retrieve_password);
	$('#id-new_user-1').hide();
	if (sett_retrieve_password != 'Y') {
	   $('#id-retrieve_pswd-1').hide();
	}
	
	if (sett_language != 'Y') {
		$('#id_sc_field_language').hide();
	}
	
	if (sett_remember_me != 'Y') {
		$('#idAjaxCheckbox_remember_me').hide();
	}
});
</script>

Com isto, o problema de esconder/mostrar os campos foi resolvido, mas o problema da macro não. Enfim, a NM deveria nos poupar de perder tempo com isto, pois a macro sc_field_display é para funcionar no evento onLoad, conforme está na documentação.

OBS.: Se o seu template contiver a chamada para o JQuery, retire, pois dá conflito com o JQuery que vem no próprio SC.

1 Curtida