Desabilitar campos opcionais da edição de perfil

Desabilitar campos opcionais da edição de perfil

por Thiago Viana Colares -
Número de respostas: 3
Pessoal, estu com esse problema e ficaria bem grato se alguém pudesse ajudar, rs... Preciso desabilitar os campos opcionais da edição de perfil de usuários (menos do administrador master). Tudo que o botão "Mostrar avançados" da parte Opcional mostra deve ser desabilitado.

Alguém pode ajudar?

Agradeço desde ja!
Contagem das avaliações:  -
Em resposta à Thiago Viana Colares

Re: Desabilitar campos opcionais da edição de perfil

por Ângelo Rigo -
Pode verificar se é administrador usando a função has_capability:
Verifique se o segundo parâmetro existe : $contextid
if (has_capability('moodle/course:create', $contextid)) {
//...
} else {
//...
}
Contagem das avaliações:  -
Em resposta à Ângelo Rigo

Re: Desabilitar campos opcionais da edição de perfil

por Manuel NT -

  Exemplo interessante, estou com um problema parecido , preciso desabilitar a  opção de professores mudarem o nome do curso , mas nao poso tirar a permissao dos outros campos (entao eles devem ter  courseediting ativado), estava etudando o formslib.php  e encontrei uma  função hardfreeze(); que me pareceu ser util , na minha analize , é esta função que é usada para desabilitar os campos que vc marca como  nao editaveis pros usuarios , mais tem um porem , ele transforma o campo num texto simples e nao num input , ou seja o campo nao é enviado pelo  action do formulario, estou testando se  isto vai acarretar problemas no campo cadastrado , mas no  geral , este  campo me interessa...  Se alguem tiver outra solução de  desabilitar a  edição de apenas alguns campos será  bem vinda;

Contagem das avaliações:  -
Em resposta à Manuel NT

Re: Desabilitar campos opcionais da edição de perfil

por Ângelo Rigo -
No meu if else apenas adicionei a opção disabled (podia ser readonly) para quem não é administrador, assim o valor passa adiante, ficou assim :

if (has_capability('moodle/course:create', $contextid)) {
$mform->addElement('text', 'email', get_string('email'), 'maxlength="100" size="30"');
$mform->addRule('email', $strrequired, 'required', null, 'client');

} else{

$mform->addElement('text', 'email', get_string('email'), 'maxlength="100" size="30" disabled');
$mform->addRule('email', $strrequired, 'required', null, 'client');

}

Este exemplo é no arquivo user/editlib.php Cuidado com a variável $contextid verifica o valor dela antes de usá-la

mas apenas se está usando uma versão antiga a atual moodle 1.9 tem esta capability changefullname e outras já disponível olha no tracker
Contagem das avaliações:  -