O formulário do xoops na versão 2.0.x coleta informações que em alguns casos são desnecessárias como YIM, AIM, ICQ e MSN. Fiz então este pequeno tutorial explicando como personalizar seu formulário.
Entenda o case: A pessoa se cadastra em um portal xoops. O formulário de cadastro do Xoops conta apenas com informações importantes como nome, login, senha, email, enfim, seguindo uma tendência de que quanto maior o formulário web, menor o número de cadastros.
Depois que a pessoa se cadastrou e logou-se no site, aparece a opção Menu do Usuário>>Editar Perfil. Neste segundo formulario aparecem outros campos adicionais que a pessoa pode completar como o ICQ, AIM, MSN e YIM. O que vou fazer é mudar os
campos como a seguir:
ICQ>>Nome da empresa
AIM>>Nome do contato da empresa
YIM>>Endereço da empresa
MSN>>Email alternativo
Primeiro você deve mudar os textos como acima nos arquivos de língua, tanto no adm (admin/languages/portuguese.php) quanto no front-end (languages/portuguese.php). Agora o formulário exibe o que quero colher como nome da empresa, endereço da empresa. Mas o problema é que quando se completa estas informações aparece o erro:
user_icq deve ser menor que 15 characters
user_aim deve ser menor que 18 characters
user_yim deve ser menor que 25 characters
user_msn deve ser menor que 60 characters
Isto acontece porque os campos são limitados àqueles números de caracteres. Para resolver isto faça o seguinte:
em edituser.php na raíz você muda as linhas abaixo (coloquei os novos valores em amarelo):
$icq_text = new XoopsFormText(_US_ICQ, ‘user_icq’, 30, 200, $xoopsUser->getVar(’user_icq’, ‘E’));
$aim_text = new XoopsFormText(_US_AIM, ‘user_aim’, 30, 200, $xoopsUser->getVar(’user_aim’, ‘E’));
$yim_text = new XoopsFormText(_US_YIM, ‘user_yim’, 30, 200, $xoopsUser->getVar(’user_yim’, ‘E’));
$msnm_text = new XoopsFormText(_US_MSNM, ‘user_msnm’, 30, 200, $xoopsUser->getVar(’user_msnm’, ‘E’));
O 30 é o tamanho do campo no formulário e 200 é o novo número de caracteres que o formulário vai receber. Agora temos de avisar o validador do formulário (ele que gera os erros acima). Em kernel/user.php você procura as seguintes linhas e coloca os novos valores:
$this->initVar(’user_icq’, XOBJ_DTYPE_TXTBOX, null, false, 200);
$this->initVar(’user_aim’, XOBJ_DTYPE_TXTBOX, null, false, 200);
$this->initVar(’user_yim’, XOBJ_DTYPE_TXTBOX, null, false, 200);
$this->initVar(’user_msnm’, XOBJ_DTYPE_TXTBOX, null, false, 200);
Tudo certo e não aparecem erros. Mas tem um problema: o banco de dados continua gravando somente 15 caracteres no ICQ (que agora é Nome da Empresa), 18 caracteres para o AIM (que agora é Nome do Contato) e o mesmo com o YIM e MSN. Para resolver isto, é necessário aumentar o número de caracteres que o banco de dados pode aceitar.
No Mysql você insere os novos valores na tabela xoops_users (eu fiz via phpMyAdmim):
`user_icq` varchar(200) NOT NULL default ”,
`user_aim` varchar(200) NOT NULL default ”,
`user_yim` varchar(200) NOT NULL default ”,
`user_msnm` varchar(200) NOT NULL default ”,
E finalmente em admin/users/userform.php vc muda as seguintes linhas de
$icq_text = new XoopsFormText(_AM_ICQ, “user_icq”, 15, 15, $icq_value);
$aim_text = new XoopsFormText(_AM_AIM, “user_aim”, 18, 18, $aim_value);
$yim_text = new XoopsFormText(_AM_YIM, “user_yim”, 25, 25, $yim_value);
$msnm_text = new XoopsFormText(_AM_MSNM, “user_msnm”, 30, 100, $msnm_value);
para:
$icq_text = new XoopsFormText(_AM_ICQ, “user_icq”, 30, 200, $icq_value);
$aim_text = new XoopsFormText(_AM_AIM, “user_aim”, 30, 200, $aim_value);
$yim_text = new XoopsFormText(_AM_YIM, “user_yim”, 30, 200, $yim_value);
$msnm_text = new XoopsFormText(_AM_MSNM, “user_msnm”, 30, 200, $msnm_value);
0