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:
-
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.
-
Mesmo que você inspecione o HTML gerado e tente dar um display: none nos elementos, de nada funciona.
-
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.