LimeSurvey - Tópicos avançados
Chaves de acesso
Por meio das chaves de acesso, é possível restringir a utilização dos questionários apenas a usuários finais selecionados. Ao publicar um formulário, o servidor será perguntado se deseja mudar para o modo de acesso restrito. Clicando “mudar para modo de acesso restrito”, essa funcionalidade será ativada e o sistema perguntará se deve inicializar os códigos, após o que será possível criar chaves de acesso e enviar e-mails de convite para o preenchimento do formulário. Os códigos são acessíveis por meio do botão na barra de ferramentas do inquérito.
Por padrão, a nova tabela de códigos terá campos para informar o primeiro e o último nome do respondente, seu e-mail e o código de acesso (que também pode ser criado automaticamente). O botão permite incluir novos campos nessa tabela, o que pode ser especialmente útil na personalização do questionário usando o expression manager. Nesse caso, far-se-á uso de expressões como {TOKEN:FIRSTNAME} ou {TOKEN:LASTNAME}.
Modelos de e-mail
O botão leva à configuração dos modelos de e-mail. Ele pode ser acessado pela interface das chaves de acesso e pelo botão no menu do inquérito. Além dos e-mails relacionados à restrição de acesso ao formulário, modelos de notificação ao administrador, confirmação da conclusão do formulário e registro no sistema estão disponíveis. Eles fazem uso extenso do expression manager.
O uso conjunto de e-mails e chaves de acesso permite a criação de uma mala direta de convites para a participação na pesquisa.
Validação
Cada pergunta contém opcionalmente uma expressão de validação. Trata-se de uma expressão regular, colocada entre barras (“/”), no formato habitualmente usado na programação de computadores. Para validar um número com um tamanho mínimo e um máximo, por exemplo, a expressão seria: /^[0-9]{min,max}$/, onde:
Código | Significado |
^ | Inicio da resposta |
[0-9] | Qualquer caractere compreendido de 0 a 9 (outras opções seriam, por exemplo, [a-z], [A-Z] ou ainda [a-zA-Z\u00c0-\u017F] para permitir qualquer letra, maiúscula, minúscula ou acentuada) |
$ | Fim da resposta |
h3. Exemplos de expressões regulares
Algumas expressões regulares comumente utilizadas para validar respostas nos formulários da CFECS:
Campo | Expressão regular |
CEP | /^[0-9]{5}-[0-9]{3}$/ |
CNPJ | /^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}$/ |
CPF | /^[0-9]{3}.[0-9]{3}.[0-9]{3}-[0-9]{2}$/ |
Código IBGE de município | /^[0-9]{7}$/ |
INEP | /^[0-9]{8}$/ |
Telefone | /^\([0-9]{2}\) [0-9]{4,5}-[0-9]{4}$/ |
No caso de CEP, CNPJ, CPF e telefone, a formatação da entrada será automática quando se usarem os modelos “CGU” e “Embutido”. Ou seja, bastará ao usuário final digitar os números do CEP, CNPJ, CPF ou telefone para que os demais caracteres sejam inseridos automaticamente.
Dinamizando um questionário
O expression manager é o nome dado a um mecanismo de automação de formulários utilizado pelo LimeSurvey. Por meio de códigos escritos entre chaves (“{“ e “}”), podem-se dinamizar enunciados, descrições, textos de ajuda e de encerramento, e também definir se uma questão ou um grupo de questões será exibido. No expression manager poderão ser utilizados os códigos das questões (para obter as respectivas respostas) e funções, das quais a mais comum será a de processamento condicional (“if”). A sintaxe da função if é semelhante à do Excel:
{if(questao1 == ″comparação″, ″Verdadeiro″, ″Falso″)}
Note bem que deve haver um espaço entre o operador lógico (“==”, neste caso) e os operandos. O primeiro argumento da função é a condição a ser cumprida, o segundo é a ação ou o texto no caso de a comparação ser verdadeira, e o terceiro, no caso de ser falsa.
Os principais operadores lógicos disponíveis são:
- (): agrupamento e argumentos de funções.
- !: negação.
- < <= > >= it le gt ge: comparação de valores (menor, menor ou igual, maior, maior ou igual).
- == != eq ne: "igual" ou "não igual".
- and or: "e" e "ou"
Exemplos de expression manager
Utilizando uma resposta anterior
{Name}, há quanto tempo você trabalha no(a){instituição}?
No caso de a resposta á pergunta com o código "Nome" ser "Fulano" e á pergunta com o código "Instituicao" ser "CGU", será exibido: "Fulano, há quanto tempo você trabalha no(a) CGU?"
Texto condicional
{Nome}, há quanto tempo você trabalha {if(TipoInstituicao == “Associacao”, “nessa associação”, if(TipoInstituicao == “OrgaoPublico”, “nesse órgão”, “nessa empresa”))}?
Neste caso, conforme a resposta à pergunta com o código “TipoInstituicao”, será exibido o texto “nessa associação”, “nesse órgão” ou “nessa empresa”. Note que há duas cláusulas “if”, uma dentro da outra, para o caso de a primeira condição não ser satisfeita.
E-mail exemplificado
Informe preferencialmente o seu endereço de e-mail oficial na entidade (ex.: {strtolower(str_replace(" ",".",Responsavel))}@{strtolower(str_replace(" ","",Entidade))}.{if(TipoEntidade == "ONG","org",if(TipoEntidade == "AssMu", "org", if(TipoEntidade == "OrgLe", "leg", if(TipoEntidade == "OrgJu", "jus", "gov"))))}.br)
Esse exemplo mostra o uso das funções “strtolower” para colocar um texto em caixa baixa e “str_replace” para substituir os espaços nos nomes por ponto ou para excluí-los (substituir por um texto vazio: ″″). Ao final do processamento, o texto ficará como segue:
Informe preferencialmente o seu endereço de e-mail oficial na entidade (ex.: fulano.de.tal@nomedaentidade.org.br)
Ajuda adicional
- A melhor fonte de informações sobre o expression manager é o manual do LimeSurvey: https://manual.limesurvey.org/Expression_Manager
- A lista de funções suportadas pode ser encontrada em: https://manual.limesurvey.org/Expression_Manager#Access_to_Functions
Equações de relevância
Equações de relevância determinam se uma pergunta ou um grupo de perguntas será exibido para o usuário final – isto é, determinam se é relevante. Elas podem ser criadas com o uso do expression manager ou do botão na barra de ferramentas da pergunta. Contudo, somente com o expression manager é possível determinar a relevância de todo o grupo de questões. Por isso, e por permitir formas mais refinadas para determinação da relevância, o expression manager é a opção recomendada.
Para adicionar uma equação de relevância usando o expression manager, não é preciso usar chaves para a delimitação da expressão (todo o conteúdo do campo “equação de relevância” é considerado código do expression manager). Um valor verdadeiro ou igual a 1 determinará a exibição da pergunta ou do grupo. Um valor falso ou igual a zero determinará sua não-exibição. Por exemplo, para que um grupo de perguntas seja exibido somente para servidores públicos, considerando que a pergunta com o código “Trabalho” tenha coletado essa informação, poderia ser utilizada a seguinte equação de relevância:
O expression manager é o mecanismo recomendado para criar equações de relevância.
Trabalho == “orgaopublico”
Adicionando máscaras de formatação automática
Os modelos CGU e Embutido incluem uma função em Javascript para acrescentar máscaras de formatação automática customizadas, além daquelas já disponibilizadas. Trata-se da função maskAll(m), que toma como argumentos um array de arrays contendo cada um a máscara, as suas opções, e a expressão regular de validação à qual se quer acrescentar a formatação automática. Para acrescentar as máscaras customizadas, acrescente um script como o seguinte ao código-fonte da descrição do questionário ou do grupo de perguntas:
<script type="text/javascript"> $(document).ready(function() { var telefone = function (val) { return val.replace(/\D/g, ).length === 11 ? '00-00000-0000' : '00-0000-00009'; }; var telefoneOptions = { onKeyPress: function(val, e, field, options) { field.mask(telefone.apply({ }, arguments), options); } }; maskAll([[telefone, telefoneOptions, "/^[0-9]\u007b2\u007d-[0-9]\u007b4,5\u007d-[0-9]\u007b4\u007d$/", [12, 13]]]); }); </script>
É preciso observar estritamente as quebras de linha antes e após as chaves (“{“ e “}”) e substituir as chaves nas strings, como se verá a seguir.
Utilizando de chaves em Javascript("{" e "}")
O uso de chaves (“{“ e “}”) pelo expression manager resulta em uma dificuldade para a inserção de códigos em Javascript no formulário. O Javascript permite acrescentar funcionalidades e dinamizar adicionalmente os formulários, mas também faz uso de chaves. No caso de ser necessário usar essa linguagem (para acrescentar novas máscaras de formatação automática, por exemplo), as chaves do código terão de ser seguidas imediatamente por uma quebra de linha (na abertura) ou precedidas imediatamente de uma quebra de linha (no fechamento). Nas strings, as chaves terão de ser substituídas por “\u007b” na abertura e por “\u007d” no fechamento.
Editando formulários fora do LimeSurvey
Há casos em que a edição de um formulário no LimeSurvey pode ser muito demorada – um formulário muito extenso, por exemplo, ou com várias perguntas semelhantes. Nessas ocasiões, pode ser vantajoso exportar o inquérito e editá-lo manualmente. Para isso, o usuário deve clicar no botão na barra de ferramentas do inquérito, em seguida em Exportar…” e depois em Formato com valores separados por tabulações (*.txt)”. Será baixado um arquivo de texto com todas as informações do inquérito, em um formato semelhante ao CSV, mas com os valores separados por tabulação.
O arquivo gerado pode ser aberto em diversos editores, mas é recomendável utilizar o Notepad++, que é homologado para uso na CGU. Não é recomendável utilizar nem o LibreOffice, nem o Excel, porque pode haver problemas na importação subseqüente. A primeira linha do arquivo corresponde a um cabeçalho com a identificação de cada coluna. A cada linha, uma informação de configuração ou uma unidade do formulário (questão ou grupo de questões). No caso de formulário com muitas repetições das questões, o procedimento de copiar um grupo de questões pronto, colar e substituir os códigos das questões deve ser suficiente para praticamente concluí-lo. Depois, para importar novamente o questionário, é preciso criar um novo com o botão na barra de ferramentas do sistema, na aba importar selecionar o arquivo modificado no computador do usuário, e importar o inquérito.