Back-End

6 nov, 2013

Listando os resultados de envio dos webforms com views

Publicidade

Oi, pessoal, como vão vocês? Estou aqui mais uma vez, agora com um assunto que deve ser muito útil: listando os resultados de envio dos webforms (submissões) existentes em um site – em Drupal, óbvio!

Antes de prosseguir, é importante saber que vale para Drupal 7 e também para as dependências:

Beleza! Acredito que todo mundo saiba as diferenças entre node e webform, mas, pra quem não sabe, o mais importante é: nodes são gerados a partir do envio de um formulário de qualquer tipo de conteúdo, enquanto webforms são gerados a partir de um outro tipo de formulário, que por sua vez são relacionados a um node. Por isso, as consultas das informações de um webform são feitas de forma diferente das de um node. Ficou claro?

Sem mais delongas, vamos para a criação de uma view que deve:

  1. Ser do tipo lista de usuários. Uma view que lista conteúdo também deve funcionar, mas nesse exemplo estamos tratando a situação de forma mais genérica e a listagem de usuários será mais abrangente.
  2. Ter formato de tabela para melhor visualização, consequentemente irá listar campos.
  3. Ser do tipo página.
  4. Ter as seguintes configurações (clique nos links a seguir para ver as imagens das configurações):
    • Relacionamentos:
    • Campos:
    • Critérios de filtragem:
      • Usuário: Ativo (Sim); isso exclui os usuários com status de “bloqueado”.
      • Usuário: Nome (exposto); a marcação deste filtro exposto vai gerar um campo autocomplete para filtrar por nome de usuário.
      • Conteúdo: Título (exposto); a marcação deste filtro exposto vai gerar um campo de texto para filtrar por título do conteúdo, contendo o que for inserido. Também é selecionada a relação “submissão do webform”.
    • Critérios de ordenação:
      • Usuário: Nome (asc); isso fará a lista ser exibida por ordem alfabética por padrão.
      • Submissões do webform: Enviado (desc); com a relação “submissão do webform” selecionada. Isso fará que o segundo critério de ordenação seja pelo envio mais recente.
    • Configurações da página:
      • Endereço: quando se gera um display tipo página em uma view, o endereço é obrigatório. Pode colocar o endereço que mais for conveniente. Eu coloquei admin/content/webform-submissions para seguir a linha de menu junto com a página de administração do conteúdo – e também dos webforms.
      • Menu: Aba; intitulei o menu com Webform submissions e selecionei que fosse do tipo aba de menu. Isso vai fazer com que gere uma aba que será colocada na mesma página de administração do conteúdo, por causa do endereço configurado acima.
    • Formato:
      • Já falamos que é preciso ter o formato de tabela para uma melhor visualização. Mas ainda existem algumas configurações no formato de tabela que são interessantes:
        • Nome: marcado como ordenável.
        • Formulário: marcado como ordenável.
        • Submissões do webform: Link “ver”: na mesma coluna de “Formulário”.
        • Enviado: marcado como ordenável.
        • Grouping field nr.1: Agrupar por “Nome”.

É isso! Lembrando que isso é uma view, então algumas configurações devem ser colocadas de acordo a preferência e necessidade. Por exemplo, eu ainda coloquei as permissões como acessar o resultado de todos os webforms e ainda defini um texto para ser exibido no comportamento quando ser resultados, como mostra a imagem abaixo:

webform-1

A seguir, deixo também uma imagem do resultado final:

webform-2

Daí você me pergunta: Mas, xulispa, #comofaz pra já exibir nessa view o resultado de um campo específico do webform enviado, para não precisar de ir até a página de resultado pra ver essa informação?

Simples, cumpadi! Com a relação de usuário configurada, adicione um campo a mais, do tipo webform submission data, chamado valor. Ao adicionar esse campo, você terá a possibilidade de escolher qual o webform – através de um campo autocomplete – e informar qual componente do webform que deseja exibir seu valor. Massa, né?

Essa contribuição tem um agradecimento ao Luiz Henrique, e possibilitou a criação de um módulo com essa funcionalidade. O módulo ficou bem genérico e pode ser baixado no drupal.org, contendo a view criada neste artigo.

Encerro aqui. Qualquer comentário e contribuição para melhoria desse módulo é bem-vinda!