segunda-feira, 31 de janeiro de 2011

Tornar Campo Sobrenome Opcional no Formulário de Cadastro de Usuário no Moodle


Caso você queira customizar o formulário de cadastro de usuário do Moodle para que o campo sobrenome não seja obrigatório, é necessário alterar o código PHP.
    

Observação:
Se estiver usando a verão 2.7 ou  superior, veja atualização desse post no fórum da comunidade Badiu nesse link: http://comunidade.badiu.com.br/mod/forum/discuss.php?d=132


    Para tornar opcional o preenchimento do campo sobrenome, siga os seguintes passos:

1° Passo  - Abrir o arquivo editlib.php

    Abra em um editor de texto o seguinte arquivo:
    $CFG->wwwroot /user/editlib.php

$CFG->wwwroot  se refere ao endereço da pasta em que a aplicação do Moodle está instalado.

2° Passo  - Localizar a  regra do campo sobrenome
    Localize no arquivo o seguinte código:

$mform->addRule('lastname', $strrequired, 'required', null, 'client');

Esse código fica normalmente na linha 97. Define que o campo sobrenome do usuário deve ser preenchido.


3° Passo  - Desativar a  regra do campo sobrenome

    Faça comentário na linha do código que define a regra de obrigatoriedade ou simplesmente apague a linha de código. Se fizer o comentário, a linha de código deve ficar assim:

//$mform->addRule('lastname', $strrequired, 'required', null, 'client');


4° Passo  - Gravar alteração do arquivo editlib.php
    Para que a alteração seja efetivada, grave o arquivo. Feito isso, basta acessar o formulário de cadastro e verificar que o campo sobrenome se tornou opcional.


5° Passo  - Desabilite a obrigatoriedade do sobrenome na biblioteca do sistema
Para evitar que o formulário de perfil tranque a navegação após o login, desabilite o sobrenome na  função  função user_not_fully_set_up. Para isso, siga as instrução no link: http://moodlephp.blogspot.com/2011/02/cancelar-atualizacao-obrigatoria-do.html

    Essa alteração não é recomendado nos campos que são definidos obrigatórios a nível do banco de dados como a caso dos campos  nome e e-mail.

16 comentários:

  1. Lino,

    Obrigado. Dica simples mas que facilitará muito a minha vida durante a importação de alunos.

    Diogo Fereira

    ResponderExcluir
  2. E como tornar o campo descrição opcional??

    ResponderExcluir
  3. Para tornar o campo descrição opcional no formulário de edição do perfil do usuário na versão 1.9. do Moodle, siga os seguintes passos:
    1° Passo - Abrir o arquivo edit_form.php
    Abra em um editor de texto o seguinte arquivo:
    $CFG->wwwroot /user/edit_form.php
    $CFG->wwwroot se refere ao endereço da pasta em que a aplicação do Moodle está instalado.
    2° Passo - Localizar a regra do campo descrição
    Localize no arquivo o seguinte código:
    $mform->addRule('description', $strrequired, 'required', null, 'client');
    Esse código fica normalmente na linha 28. Define que o campo descrição deve ser preenchido.
    3° Passo - Desativar a regra do campo descrição
    Faça comentário na linha do código que define a regra de obrigatoriedade ou simplesmente apague a linha de código. Se fizer o comentário, a linha de código deve ficar assim:
    //$mform->addRule('description', $strrequired, 'required', null, 'client');

    ResponderExcluir
  4. Qual seria o caminho para bloquear, somente, a edição dos campos nome e sobrenome do perfil pelos usuários?

    Desde já agradeço. [],s

    ResponderExcluir
    Respostas
    1. Maurício,

      Para bloquear os campos nome e sobrenome do formulário de edição do perfil do usuário, siga as instruções no post: http://moodlephp.blogspot.com.br/2012/05/bloquear-edicao-do-nome-e-sobrenome-dos.html

      Excluir
  5. Na versão 2.2 do moodle, como tornar o campo "descrição" obrigatório somente na edição?

    ResponderExcluir
    Respostas
    1. Para obrigar o preenchimento do campo descrição apenas na edição do perfil, siga as instruções do post:
      http://moodlephp.blogspot.com.br/2012/07/tornar-o-campo-descricao-obrigatorio-ao.html

      Excluir
  6. parabens pelos seu trabalho no moodle...
    gostaria de tirar alguns campos do formulario default do moodle e adcionar 7 campos de imagens (documentos pessoais dos alunos), pensei em editar o arquivo /user/editlib.php,
    nessa parte abaixo mas nao sei se funcionaria em conjunto com a criação de um campo na tabela users do server e se ia influenciar no core do moodle..


    function useredit_update_picture(stdClass $usernew, moodleform $userform, $filemanageroptions = array()) {
    global $CFG, $DB;
    require_once("$CFG->libdir/gdlib.php");

    $context = get_context_instance(CONTEXT_USER, $usernew->id, MUST_EXIST);
    $user = $DB->get_record('user', array('id'=>$usernew->id), 'id, picture', MUST_EXIST);

    $newpicture = $user->picture;
    // Get file_storage to process files.
    $fs = get_file_storage();
    if (!empty($usernew->deletepicture)) {
    // The user has chosen to delete the selected users picture
    $fs->delete_area_files($context->id, 'user', 'icon'); // drop all images in area
    $newpicture = 0;

    } else {
    // Save newly uploaded file, this will avoid context mismatch for newly created users.
    file_save_draft_area_files($usernew->imagefile, $context->id, 'user', 'newicon', 0, $filemanageroptions);
    if (($iconfiles = $fs->get_area_files($context->id, 'user', 'newicon')) && count($iconfiles) == 2) {
    // Get file which was uploaded in draft area
    foreach ($iconfiles as $file) {
    if (!$file->is_directory()) {
    break;
    }
    }
    // Copy file to temporary location and the send it for processing icon
    if ($iconfile = $file->copy_content_to_temp()) {
    // There is a new image that has been uploaded
    // Process the new image and set the user to make use of it.
    // NOTE: Uploaded images always take over Gravatar
    $newpicture = (int)process_new_icon($context, 'user', 'icon', 0, $iconfile);
    // Delete temporary file
    @unlink($iconfile);
    // Remove uploaded file.
    $fs->delete_area_files($context->id, 'user', 'newicon');
    } else {
    // Something went wrong while creating temp file.
    // Remove uploaded file.
    $fs->delete_area_files($context->id, 'user', 'newicon');
    return false;
    }
    }
    }

    if ($newpicture != $user->picture) {
    $DB->set_field('user', 'picture', $newpicture, array('id' => $user->id));
    return true;
    } else {
    return false;
    }
    }

    ResponderExcluir
    Respostas
    1. Beta Educar,

      Para adicionar novos campos no formulário de cadastro de autoinscrição no Moodle, siga os seguintes passos:
      1)Acesse o Moodle com senha de admin
      2)Navegue em
      Administração ► Usuários ► Contas ► Campos de perfil do usuário
      ou acesse o link: URL_MOOLDE/user/profile/index.php
      3)Acrescente novos campos ao formulário

      Para excluir algum campo padrão, há duas alternativas:
      1- Fazer hacker no código
      2- Criar um novo plugin de autenticação

      Em caso de hacker no código, me informa qual campo pretende excluir e qual é a versão do seu Moodle

      Excluir
  7. Adorei o blog, continue postando, no site Scriptcase contem algumas informações sobre.

    ResponderExcluir
  8. Curti muito o blog, tá me ajudando muito...
    Só mais uma dúvida, criei um campo novo no meu formulário, porém dependendo do que o usuário escolher a inscrição ser direcionada para uma área diferente para aceitação do usuário?
    Por exemplo: o usuário selecionou a área de exatas, então um administrador de exatas recebe a solicitação de cadastro dele, se for para outra área, outro usuário será o responsável por este aceite..
    Obrigado.

    ResponderExcluir
    Respostas
    1. Rafael,

      Esse tipo de customização deve ser feita no plugin de inscrição. Se o cadastro estiver associado a inscrição, faça um plugin que agrupa funcionalidade do plugin de autenticação e plugin de inscrição.

      Para criar um plugin de inscrição, clone um já existente e altere o código. No código você poderá criar a regra de envio de e-mail dependendo do perfil de cadastro.

      Excluir
  9. Ola Baidu, não consigo encontrar esse código na versão 2.7.2 será que você poderia dar uma ajuda ?

    ResponderExcluir
  10. Olá... também estou com problemas para encontrar o codigo no moodle 2.8.

    ResponderExcluir
  11. Baidu, muito obrigado por compartilhar seus conhecimentos.

    ResponderExcluir