Desenvolvimento um módulo do Drupal: parte 2
Salve meus amigos!
Conforme prometido, lanço hoje a segunda parte do tutorial de desenvolvimento de um módulo do Drupal. Na primeira parte, apresentei a funcionalidade do módulo, e o básico, a criação do arquivo .info, e o início da construção do módulo, com o arquivo .module, que nada mais é um arquivo .php.
Lembrando que este tutorial foi totalmente baseado neste tutorial do Drupal.org.
Vamos agora revisar as interfaces e links que deverão ser criados:
- Um bloco, com duas exibições: o bloco propriamente dito, e também a listagem na página de administração de blocos;
- Uma página de administração;
- Um link para a página de Administração;
- Uma página de ajuda;
- A configuração de permissões do bloco (qual papel de usuário poderá acessar a página de administração);
Todas estas opções serão criadas através hooks (em português, ganchos), que são funções especiais que criam as interfaces do Drupal. A regra diz que um hook tem que seguir a seguinte sintaxe: function nomedomodulo_nomedohook(parâmetros) { //conteudo do hook }.
Abaixo, estão listados todos os Hooks utilizados no módulo:
<?php
// $Id$function donatepagseguro_help($path, $arg) {
// cria a pagina de ajuda} // function donatepagseguro_help
function donatepagseguro_perm() {
// cria o controle de permissoes} // function donatepagseguro_perm()
function donatepagseguro_block($op = 'list', $delta = 0, $edit = array()) {
// cria o(s) bloco(s) do modulo} // function donatepagseguro_block()
function donatepagseguro_admin() {
// cria a administracao do bloco} // function donatepagseguro_admin()
function donatepagseguro_admin_validate($form, &$form_state) {
Faz a validação do formulario da pagina de administracao} //function donatepagseguro_admin_validate()
function donatepagseguro_menu() {
// cria o link do menu} //function donatepagseguro_menu()
Em cada um dos hooks, eu linkei para a respectiva página do mesmo na página de API do Drupal. Observer que donatepagseguro_admin() não é um hook. Por isso, o conteúdo dele pode ser construído da forma que quisermos.
Legal. No tutorial de hoje, vamos construir a página de ajuda e as permissões.
A página de ajuda (o hook _help)
Para a ajuda do usuário, eu quero criar duas mensagens:
- Na página de configuração do módulo, será exibido a seguinte mensagem: Para utilizar este módulo é necessário criar uma conta no PagSeguro., juntamente com um link apontando a página de ajuda, onde serão fornecidos mais informações.
- Na página de ajuda, será exibida a mensagem: Um módulo simples que habilita um bloco com o botão de Doação do PagSeguro no site. Para fazer uso deste módulo, é necessário que você tenha ou crie uma conta no PagSeguro. Para se cadastrar, acesse esta página e clique em "Cadastre-se Já".
Isso será feito usando o hook _help, como foi dito:
function donatepagseguro_help($path, $arg) {
$output = ''; //declare your output variable
switch ($path) {
case "admin/help#donatepagseguro":
$output = ''. t("Um módulo simples que habilita um bloco com o botão de Doação do PagSeguro no site.") .'
';
$output .= '<
p>' . t('Para fazer uso deste módulo, é necessário que você tenha ou crie uma conta no PagSeguro. Para se cadastrar, acesse esta página e clique em "Cadastre-se Já".') . '
<
p>';
break;
case "admin/settings/donatepagseguro":
$output = ''. t('Para utilizar este módulo é necessário criar uma conta no PagSeguro.') .'
';
break;
}
return $output;
} // function donatepagseguro_help
Observe que este hook recebe dois parâmetros, as variáveis $path (caminho) e $arg. O $path, que nada mais é que o endereço das páginas onde as mensagens serão impressas, é o que será utilizado no tutorial. Não é necessário usar as $args, mas eventualmente, posso voltar a tratar delas.
O que foi feito dentro desta função:
Declaro uma variável, chamada $output, cujo conteúdo será a mensagem de ajuda.
Eu testo o valor da variável $path, utilizando um switch: Se o usuário estiver acessando for admin/help#donatepagseguro, o valor de $output será X, caso o caminho que o usuário estiver acessando for admin/settings/donatepagseguro, o valor de $output será Y. por fim, eu retorno o valor da variável (return $output);
As permissões (o hook _perm)
Criar permissões para um módulo é muito simples. A documentação do Drupal sugere que você siga a forma "verbo_acao nome_do_modulo". Por exemplo, "administrar donatepagseguro", "acessar donatepagseguro", etc.
As permissões do módulo PagSeguro ficaram assim:
function donatepagseguro_perm() {
return array('Administrar Donate PagSeguro');
} // function donatepagseguro_perm()
Simples assim. Se por acaso, o módulo tiver vários acessos a partes diferentes do módulo, basta declarar os acessos em linha, separados por vírgula:
function donatepagseguro_perm() {
return array('Administrar blá', 'Acessar blá', 'Acessar bló');
} // function donatepagseguro_perm()
Mais na frente no tutorial, iremos associar a regra de acesso a um item do menu, que será criado utilizando o hook _menu.
E por Hoje é só pessoal!! Nos vemos na próxima semana, na mesma bat-hora e no mesmo bat-canal.