Apps

Module Live Form 3.2

Description

Ce module permet de créer des questionnaires personnalisés (enquêtes ou quiz).

Le module propose les fonctionnalités suivantes :

  • Créer le contenu du questionnaire (Questions, Section, Saut de page) rapidement,
  • Ajouter des règles de validation de données pour garantir que les valeurs des champs sont saisies correctement,
  • Rediriger les utilisateurs vers les questions appropriées en fonction de leurs réponses précédentes,
  • Analyser les données recueillies directement sur votre site ou en exportant au format CSV

Captures d'écran

1. Soumission d'un questionnaire
2. Edition d'un questionnaire
3. Edition d'une question
4. Soumission réussie d'un quiz
5. Soumission échouée d'un quiz

Installation

Ajouter le module Live Form avec le gestionnaire de modules et redémarrer JCMS .

Configuration

Activer le type Questionnaire/Live Form dans votre Espace de travail.

Compatibilité

La version 3.2 du module est compatible avec JPlatform 10 SP1.

Créer un questionnaire

Si vous souhaitez créer un questionnaire, allez dans le menu Ajouter de la barre du haut de la page, puis cliquez sur Contenu -> Un questionnaire.

Un nouvelle fenêtre modale à étape s'ouvre :

  1. Informations
    Vous pouvez sélectionner l'Espace de travail dans lequel le questionnaire sera créé. Par défaut, le champ est rempli avec l'Espace de travail courant,
    Cette étape vous permet de choisir le type de questionnaire que vous souhaitez créer : Enquête ou Quiz
    Vous devez définir le titre de votre questionnaire, et, optionnellement, vous pouvez également ajouter une description

  2. Présentation
    Cette étape vous permet de définir un message d'accueil, qui s'affichera avant de démarrer une soumission, et un message de fin qui apparaîtra après la soumission d'un utilisateur. Le message de fin n'apparaît que lorsque l'option Après la dernière question a la valeur Afficher le texte de fin.

  3. Comportement
    Cette étape permet de définir plusieurs paramètres qui vont modifier la manière dont le questionnaire se comporte :
    • Plusieurs soumissions possibles : Si Oui, un même utilisateur pourra soumettre plusieurs sur ce questionnaire
    • Modification des soumissions autorisée : Si Oui, un utilisateur pourra modifier ses soumissions
    • Masquer l'identité des soumissionnaires : Si Oui, la liste des soumissions n'affichera pas l'identitié des soumissionnaires, c'est-à-dire leur nom et prénom
    • Autoriser les utilisateurs non connectés : Si Oui, les utilisateurs qui ne sont pas authentifiés sur le site auront le droit de participer au questionnaire
    • Après la dernière question : Ce paramètre définit ce que vous souhaitez afficher après chaque soumission : 
      • Afficher le texte de fin : Le message de fin défini dans l'étape 2 apparaîtra. Si le message de fin à l'étape 2 est vide, alors un message par défaut apparaîtra
      • Afficher la soumission : Le récapitulatif de la soumission apparaîtra. Dans le cas d'un Quiz, la note obtenue sera affichée indiquant si l'utilisateur a échoué ou réussi le Quiz
      • Afficher la soumission et les statistiques : Le récapitulatif de la soumission apparaîtra ainsi que les statistiques de chaque question
    • Afficher pagination : Si Oui, et que le questionnaire contient plusieurs pages, une pagination apparaîtra durant les soumissions permettant ainsi aux soumissionnaires de visualiser leur avancement
    • Temps limite de soumission : Ce paramètre définit un délai maximum pour soumettre le questionnaire. Au delà de ce délai, le questionnaire sera soumis avec les questions déjà répondues
    • Trier aléatoirement les questions : Si Oui, les questions seront affichées dans un ordre aléatoire. Si le questionnaire possède plusieurs pages, les questions seront trier aléatoirement par page.

      Les paramètres suivants sont spécifiques aux questionnaires de type Quiz : 

    • Afficher les réponses et les explications : Si Oui, ce paramètre permet d'afficher les explications définies sur les questions ainsi que les réponses attendues. Ce paramètre est lié au paramètre "Après la dernière question" qui doit demander l'affichage de la soumission
    • Calcul du score par question : Ce paramètre définit la manière de calculer le score par question :
      • Aucune erreur acceptée : Si la moindre erreur est faite sur la question, le score sera de 0. Par exemple, si vous avez une question de type checkbox, et que le soumissionnaire a 2 bonnes réponses sur 3, le soumissionnaire aura 0 à cette question
      • Proportionnelles aux bonnes réponses données : Ce mode utilise le concept de Précision et de Rappel (voir http://www.wikiwand.com/en/Precision_and_recall). Si vous avez une question de type checkbox, et que le soumissionnaire a 2 bonnes réponses sur 3, le soumissionnaire n'aura pas 0, mais un score calculée selon le nombre de bonnes réponses attendues et le nombre de bonnes réponses données par l'utilisateur
    • Seuil de succès : Un quiz est considéré comme réussi si le nombre de bonnes réponses atteint le pourcentage défini dans ce paramètre.
  4. Droits
    Cette étape permet de définir
    • Droits à la soumission du questionnaire : Membres ou groupes autorisés à soumettre le questionnaire
    • Droits de modifier le questionnaire : Membres ou groupes autorisés à mettre à jour le questionnaire.
    • Droits de consulter les résultats : Membres ou groupes autorisés à consulter le questionnaire, les résultats et les statistiques
      Après chaque soumission, il est possible de prévenir les membres qui ont les droits de consulter les résultats en cochant la case Prévenir après soumission
  5. Diffusion
    Cette étape permet de définir une date de clôture de manière à ce que le questionnaire ne soit plus accessible après cette date.

Cliquez sur Terminer pour créer le questionnaire. Vous êtes alors redirigé vers la page d'édition des questions. Lorsque le questionnaire vient d'être créé, celui-ci ne contient aucun élément.

Créer des éléments de questionnaire

Pour ajouter un nouvel élément au questionnaire, vous pouvez : 

  • Cliquer dans le menu Ajouter qui se trouve dans la barre présente au dessus du questionnaire, puis choisir le type d'élément à ajouter
  • Cliquer sur le bouton déroulant se trouvant en bas du questionnaire, puis choisir le type d'élément à ajouter

Créer une question

Ajouter une nouvelle question en utilisant l'une des méthodes proposées ci-dessus.

Une nouvelle fenêtre à étape en modale s'ouvre : 

  • Questions
    • Titre : Il s'agit du titre de la question. Ce champ est obligatoire
    • Description : Permet de définir un message afin d'ajouter quelques informations supplémentaires aux soumissionaires
    • Requis : Permet de définir la question sera obligatoire lors de la soumission
    • Type de question : Permet de définir la nature de la question
    • Les champs suivants sont liés au type de question choisi précédemment : Trier aléatoirement les réponses, Choix ouvert, Validation des données ...
  • Réponses
    Cette étape apparaît si vous avez choisi un questionnaire de type Quiz
    • Questions avec des réponses : Permet de définir si la réponse d'un soumissionnaire sera noté ou non
    • Réponses : Permet de définir les réponses attendues de la question. Pour les questions de type Nombre, il est possible de définir un rang dans lequel tout nombre sera considéré comme une réponse correcte. Pour cela il faut utiliser une syntaxe de type [x,y]. Par exemple, [150, 250] signifie qu'un nombre compris entre 150 et 250 inclus est une réponse correcte.
    • Pondération : Permet de définir un coefficient sur la question afin d'avoir une question ayant un poid plus important sur le score total
    • Explication : Permet d'ajouter une explication aux soumissionnaires lorsqu'on affiche les résultats de leur soumission
  • Règles
    Selon les réponses des soumissionnaires, cette étape permet :
    • De rediriger les soumissionnaires vers les pages appropriées en fonction de leurs réponses
    • De soumettre le formulaire en fonction de leurs réponses

 

Créer une section

Une section est un texte qui peut être utile pour séparer différentes section d'un questionnaire, par exemple on peut ajouter une section par page pour ajouter des explications sur les questions de cette page.

Ajouter une nouvelle section en utilisant l'un des méthodes proposées ci-dessus.

Une fenêtre modale s'ouvre : 

  • Titre : Le titre de la section
  • Description : Permet de définir un message afin d'ajouter quelques informations supplémentaires aux soumissionaires
  • Saut de page : Permet de définir si on souhaite ajouter un saut de page avant l'ajout de la section

 

Créer un saut de page

Ajouter une nouvelle section en utilisant l'un des méthodes proposées ci-dessus.

 

Créer une question à partir d'un autre questionnaire

Ajouter une nouvelle question d'un autre questionnaire en utilisant l'un des méthodes proposées ci-dessus. 

Une nouvelle fenêtre à étape en modale s'ouvre : 

  • Questionnaires : Cette étape permet de sélectionner le quesitonnaire à partir duquel vous allez pouvoir importer de nouvelles questions
  • Questions : Cette étape affiche les questions du questionnaire sélectionné à l'étape 1. Vous pouvez cocher une ou plusieurs questions à importer. Après avoir sélectionné une ou plusieurs questions, cliquez sur Terminer : cela aura pour conséquence de dupliquer les questions sélectionnées et de les ajouter dans le questionnaire courant.

 

Dupliquer une question ou une section

Il est possible de dupliquer une question ou une section déjà présente dans le quesitonnaire. Pour cela, vous devez passer la souris sur la question ou la section pour faire apparaître les icones d'action puis cliquer sur l'icone de duplication. Après confirmation, un nouvel élément est ajouté au questionnaire.

duplicate-question  duplicate-section

 

Ordonner les éléments d'un questionnaire

 Il est possible de changer l'ordre des éléments d'un questionnaire. Pour cela, faites un glisser / déposer d'un élément à l'endroit désiré.

Ordonner les pages

 Vous pouvez déplacer le contenu d'une page sans avoir besoin de déplacer chaque élément un par un. Pour cela, allez dans le menu Actions qui se trouve dans la barre présente au dessus du questionnaire, puis sur Réorganiser les pages.

Une nouvelle fenêtre modale s'ouvre, dans laquelle vous pouvez faire un glisser / déposer d'une page à l'endroit désiré.

Valider les données

 Lorsque vous créez une question, selon le type de question que vous choisissez, certaines permettent de définir une validation des données saisies par les soumissionnaires : 

  • Plusieurs choix - Cases à cocher : 
    • Sélectionner au plus : valide si le soumissionnaire coche au maximum le nombre de cases défini
    • Sélectionner au moins : valide si le soumissionnaire coche au minimum le nombre de cases défini
    • Sélectionner exactement : valide si le soumissionnaire coche exactement le nombre de cases défini
  • Texte - Une seule ligne : 
    • Nombre :  
      • Supérieur à : valide si le soumissionnaire saisit un nombre supérieur au nombre défini
      • Supérieur ou égal à : valide si le soumissionnaire saisit un nombre supérieur ou égal au nombre défini
      • Inférieur à : valide si le soumissionnaire saisit un nombre inférieur au nombre défini
      • Inférieur ou égal à : valide si le soumissionnaire saisit un nombre inférieur ou égal au nombre défini
      • Égal à : valide si le soumissionnaire saisit le nombre défini
      • Différent de : valide si le soumissionnaire saisit un nombre qui n'est pas le nombre défini
      • Entre : valide si le soumissionnaire saisit un nombre compris entre les nombres définis
      • Non compris entre : valide si le soumissionnaire saisit un nombre qui n'est pas compris entre les nombres définis
      • Est un nombre : valide si le soumissionnaire saisit un nombre
      • Nombre entier : valide si le soumissionnaire saisit un nombre entier
    • Texte :  
      • Contient : valide si le soumissionnaire saisit un texte qui contient le texte défini
      • Ne contient pas : valide si le soumissionnaire saisit un texte qui ne contient pas le texte défini
      • Adresse e-mail : valide si le soumissionnaire saisit un texte qui est une adresse valide
      • URL : valide si le soumissionnaire saisit un texte qui est une URL valide
    • Expression régulière : 
      • Contient : valide si le soumissionnaire saisit un texte dont une partie ou l'ensemble de celui-ci correspond à l'expression régulière définie
      • Ne contient pas : valide si le soumissionnaire saisit un texte dont une partie ou l'ensemble de celui-ci ne correspond pas à l'expression régulière définie
      • Correspondances : valide si le soumissionnaire saisit un texte dont l'ensemble de celui-ci correspond à l'expression régulière définie
      • Aucune correspondance : valide si le soumissionnaire saisit un texte dont l'ensemble de celui-ci ne correspond pas à l'expression régulière définie
  • Texte - Plusieurs lignes : 
    • Texte :  
      • Nombre de caractères maximal : valide si le soumissionnaire saisit un texte qui contient au maximum le nombre de caractères défini
      • Nombre de caractères minimal : valide si le soumissionnaire saisit un texte qui contient au minimum le nombre de caractères défini
    • Expression régulière :  
      • Contient : valide si le soumissionnaire saisit un texte dont une partie ou l'ensemble de celui-ci correspond à l'expression régulière définie
      • Ne contient pas : valide si le soumissionnaire saisit un texte dont une partie ou l'ensemble de celui-ci ne correspond pas à l'expression régulière définie
      • Correspondances : valide si le soumissionnaire saisit un texte dont l'ensemble de celui-ci correspond à l'expression régulière définie
      • Aucune correspondance : valide si le soumissionnaire saisit un texte dont l'ensemble de celui-ci ne correspond pas à l'expression régulière définie
  • Nombre : 
    • Supérieur à : valide si le soumissionnaire saisit un nombre supérieur au nombre défini
    • Supérieur ou égal à : valide si le soumissionnaire saisit un nombre supérieur ou égal au nombre défini
    • Inférieur à : valide si le soumissionnaire saisit un nombre inférieur au nombre défini
    • Inférieur ou égal à : valide si le soumissionnaire saisit un nombre inférieur ou égal au nombre défini
    • Égal à : valide si le soumissionnaire saisit le nombre défini
    • Différent de : valide si le soumissionnaire saisit un nombre qui n'est pas le nombre défini
    • Entre : valide si le soumissionnaire saisit un nombre compris entre les nombres définis
    • Non compris entre : valide si le soumissionnaire saisit un nombre qui n'est pas compris entre les nombres définis
    • Est un nombre : valide si le soumissionnaire saisit un nombre
    • Nombre entier : valide si le soumissionnaire saisit un nombre entier

Enchaînements conditionnels

 Les enchaînements conditionnelles sont les règles que nous pouvons définir sur les questions ou sur les pages de manière à rediriger les soumissionnaires vers les pages appropriées, ou soumettre directement le questionnaire, selon les précédentes réponses saisies par le soumissionnaire.

Attention !

Si vous avez plusieurs questions sur une même page avec chacune une règle conditionnelle, il est possible d'avoir des conflits entre ces règles. Tout dépend de la réponse de l'utilisateur. Cela ne provoque pas d'erreur, car cela peut être utile de définir différentes règles sur une page, mais seulement une de ces conditions sera appliquées, ce qui peut ne pas correspondre à vos attentes. Pour éviter ce genre de conflit, évitez d'avoir plusieurs questions sur la même page avec chacune des règles, car rien n'empêchera l'utilisateur de répondre sans avoir les 2 conditions respectées, sauf si cela est indispensable et que vous êtes sûr de ce que vous faites.

Si vous définissez plusieurs règle sur la même question, vérifiez qu'elle ne rentre pas en conflit, par exemple si vous définissez 2 règles sur la même question pour la même valeur.

Les types de question suivants ne peuvent pas avoir d'enchaînements conditionnels :

  • Texte sur plusieurs lignes
  • Date
  • Catégorie
  • Fichier
  • Grille

Vous pouvez définir plusieurs règles sur une même question afin de donner différents comportements selon la réponse du soumissionnaire.

Une fois que vous avez défini une ou plusieurs règles, un icone apparaît sur au niveau de la page ou de la question sur la page d'édition des éléments du questionnaire.

conditional-statements

Importer/Exporter un Questionnaire

Exporter le questionnaire

Pour exporter le questionnaire, allez dans le menu Actions qui se trouve dans la barre présente au dessus du questionnaire, puis sur Exporter le questionnaire. Un fichier au format JSON est téléchargé.

Certaines données ne sont pas exportées : les données liées aux droits (contribution, consultation), la date de cloture.

Il est possible ensuite d'importer le fichier sur un autre site JPlatform ayant le module LiveForm installé.

Importer le questionnaire

Pour importer un fichier représentant un questionnaire précédemment exporté, 

allez dans le menu Ajouter de la barre du haut de la page, puis cliquez sur Contenu -> Un questionnaire.

Un nouvelle fenêtre modale s'ouvre. Cliquez sur Importer puis sélectionner le fichier d'import au format JSON.

Cliquez ensuite sur Terminer, pour créer le questionnaire. Vous êtes alors redirigé vers la page d'édition des questions.

Tester le questionnaire

Avant de publier le questionnaire, vous pouvez le tester et voir si le résultat correspond à vos attentes.

Pour cela, allez dans le menu Actions qui se trouve dans la barre présente au dessus du questionnaire, puis sur Tester le questionnaire.

Le questionnaire apparaît avec un message vous indiquant que vous êtes en mode test.

Le questionnaire se comporte de la même façon qu'en mode réel (enchaînements conditionnels, validation des données ...), mais la soumission que vous ferez dans ce mode ne sera pas conservée.

Les résultats des soumissions

Quand le questionnaire a été soumis au moins une fois, il est alors possible de visualiser les résultats de chaque soumissionnaire.

Pour cela, allez dans le menu Actions qui se trouve dans la barre présente au dessus du questionnaire, puis sur Voir toutes les soumissions.

Le tableau qui récapitule l'ensemble des soumissions d'un questionnaire apparaît.

Vous pouvez trier le tableau selon les différents critères affichés dans le tableau (Membre, Date, Temps écoulé, et Taux de réussite et Score qui apparaissent si c'est un quiz)

Vous pouvez également exporter l'ensemble des resultats au format CSV en cliquant sur l'icone csv ou via le menu Actions puis sur Télécharger toutes les réponses (CSV).

Vous pouvez visualiser les détails du résultat de chaque soumission en cliquant sur le bouton Détails présent sur chaque ligne.

result-success

Les statistiques

Quand le questionnaire a été soumis plusieurs fois, des statistiques sont calculés pour chaque question du questionnaire.

Pour visualiser les statistiques, allez dans le menu Actions qui se trouve dans la barre présente au dessus du questionnaire, puis sur Voir les statistiques.

stats-2-short


FAQ

1. Est-il possible de personnaliser le comportement après les soumissions d'un questionnaire ?

Par défaut il est possible de choisir l'un des comportements suivants :

  • Afficher le texte de fin : Le message de fin défini dans l'étape 2 apparaîtra. Si le message de fin à l'étape 2 est vide, alors un message par défaut apparaîtra
  • Afficher la soumission : Le récapitulatif de la soumission apparaîtra. Dans le cas d'un Quiz, la note obtenue sera affichée indiquant si l'utilisateur a échoué ou réussi le Quiz
  • Afficher la soumission et les statistiques : Le récapitulatif de la soumission apparaîtra ainsi que les statistiques de chaque question

Si vous souhaitez avoir un comportement différent, cela est possible mais nécessite du développement.

Voici ci-dessous un exemple de Portlet affichant un LiveForm et après la soumission appelant la JSP types/PortletLiveForm/liveform-result.jsp pour afficher le résultat :

Contenu de la JSP de Portlet

<%@page import="com.jalios.jcmsplugin.liveform.LiveFormConstants"%>
<%@ page contentType="text/html; charset=UTF-8" %><%
%><%
%><%@ include file='/jcore/doInitPage.jspf' %><%
%><%@ include file='/jcore/portal/doPortletParams.jspf' %><%
%><% PortletLiveForm obj = (PortletLiveForm)portlet; %><%
%><%@ include file='/front/doFullDisplay.jspf' %>
<div class="fullDisplay PortletLiveForm <%= obj.canBeEditedFieldByField(loggedMember) ? " unitfieldedition"="" :="" ""="" %="">" itemscope="itemscope">
<%@ include file='/front/publication/doPublicationHeader.jspf' %>

<%
String liveFormId = "c_13936";
String jsp = "/types/LiveForm/doLiveFormFullDisplay.jsp?id=" + liveFormId;
// request.setAttribute(LiveFormConstants.FORM_RESULT_URL_ATTR, "types/PortletLiveForm/liveform-result.jsp");
request.setAttribute(LiveFormConstants.FORM_RESULT_PATH_ATTR, "types/PortletLiveForm/liveform-result.jsp");
%>
<jsp:include page="<%= jsp %>">
  <jsp:param name="id" value="<%= liveFormId %>" />
</jsp:include>
<%
request.removeAttribute(LiveFormConstants.FORM_RESULT_URL_ATTR);
request.removeAttribute(LiveFormConstants.FORM_RESULT_PATH_ATTR);
%>

<jsp:include page="/front/doFullDisplayCommonFields.jsp">
</jsp:include></div>

Contenu de la JSP de résultat types/PortletLiveForm/liveform-result.jsp

<%@page import="com.jalios.jcms.handler.JcmsFormHandler"%>
<%@page import="com.jalios.jcmsplugin.liveform.model.LiveFormResult"%>
<%@page import="com.jalios.jcmsplugin.liveform.LiveFormConstants"%>
<%@ include file="/jcore/doInitPage.jspf" %>
<jsp:usebean id="formHandler" scope="page" class="custom.ResultFormHandler">
  <jsp:setproperty name="formHandler" property="request" value="<%= request %>">
  <jsp:setproperty name="formHandler" property="response" value="<%= response %>">
  <jsp:setproperty name="formHandler" property="*">
</jsp:setproperty></jsp:setproperty></jsp:setproperty></jsp:usebean>
<%
Object persistAttr = request.getAttribute(LiveFormConstants.FORM_PERSIST_ATTR);
if(persistAttr != null) {
  formHandler.setFormResultPersist(Util.toBoolean(persistAttr, false));
}
Object lfAttr = request.getAttribute(LiveFormConstants.FORM_RESULT_ATTR);
if(lfAttr != null) {
  formHandler.setLiveFormResult((LiveFormResult) lfAttr);
}
LiveFormResult liveFormResult = formHandler.getAvailableLiveFormResult();
boolean persist = formHandler.isFormResultPersist();
%>
<p><%= persist %></p>
<p><%= liveFormResult.getId() %></p>

Contenu de la classe ResultFormHandler présente dans la JSP de résultat

public class ResultFormHandler extends JcmsFormHandler {
  
  private boolean persist;
  private LiveFormResult liveFormResult;
  
  public boolean isFormResultPersist() {
    return persist;
  }
  
  public void setFormResultPersist(boolean persist) {
    this.persist = persist;
  }
  
  public LiveFormResult getAvailableLiveFormResult() {
    return liveFormResult;
  }
  
  public void setFormResultId(String formResultId) {
    this.liveFormResult = channel.getData(LiveFormResult.class, formResultId);
  }
  
  public void setLiveFormResult(LiveFormResult liveFormResult) {
    this.liveFormResult = liveFormResult;
  }
  
}
2. Sur un Live Form existant, les détails d'une soumission ne s'affiche pas. Que dois-je faire ?

Il est possible que sur un ancien Live Form, vous ne puissiez pas visualiser les détails de certaines soumissions.

Pour corriger ce problème, il faut aller dans le menu Actions, cliquer ensuite sur "Calculer les scores...", puis confirmer dans la modale qui s'ouvre.

Après cela, les soumissions devrait être à nouveau visibles correctement.

3. Est-il possible d'ajouter sur tous les questionnaire un champ sans passer par l'édition des questions ?

Ceci est possible en faisant du développement.

Par exemple, imaginons que nous souhaitons injecter un champ "priority" dans tous nos questionnaires.
Pour cela, il faut :

  • Créer une JSP dans laquelle on inclut le questionnaire
  • Créer une JSP dans laquelle on ajoute le champ priority, et qui est déclarée dans le fichier plugin.xml avec la target LIVEFORM_RENDER_FORMITEMS_BEFORE
  • Créer une classe java qui étend BasicDBListener et qui est déclaré dans le fichier plugin.xml pour écouter les création de LiveFormResult
  • Créer la JSP liveform-result.jsp (avec la classe java FormHandler), la page vers laquelle on est redirigé après soumission


Contenu de la JSP dans laquelle on inclut le questionnaire

...
<%
String liveFormId = "c_13936";
String jsp = "/types/LiveForm/doLiveFormFullDisplay.jsp?id=" + liveFormId;
request.setAttribute(LiveFormConstants.FORM_RESULT_URL_ATTR, "liveform-result.jsp");

request.setAttribute(LiveFormConstants.LIVEFORM_EXTRA_ITEMS_ATTR, new LiveFormExtraItems().add("priority"));
%>
<jsp:include page="<%= jsp %>">
  <jsp:param name="id" value="<%= liveFormId %>" />
</jsp:include>
<%
request.removeAttribute(LiveFormConstants.FORM_RESULT_URL_ATTR);
request.removeAttribute(LiveFormConstants.LIVEFORM_EXTRA_ITEMS_ATTR);
%>
...

Nous indiquons vers quelle JSP nous souhaitons rediriger après soumission (liveform-result.jsp).
Nous indiquons les éléments supplémentaires que le questionnaire doit prendre en compte (priority).


Contenu de la JSP dans laquelle on inclut le champ priority

<%@ include file="/jcore/doInitPage.jspf" %>
<% LiveFormHandler formHandler = (LiveFormHandler) request.getAttribute(EditDataFormHandler.FORM_HANDLER_ATTR); %>
<div class="navbar navbar-default no-navbar-brand jp-toolbar">
  <div class="container-fluid">

    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#jprocess-navbar-extraitems">
        <jalios:icon src="nav-burger" />
      </button>
    </div>

    <div class="collapse navbar-collapse" id="navbar-extraitems">
      <div class="navbar-nav navbar-form navbar-left">
        <div class="form-group">
          <label><%= glp("jcmsplugin.myplugin.priority") %></label>
          <% String priority = Util.getString(formHandler.getFieldValues("priority"), 0, "NORMAL") ; %>
          <jalios:control settings='<%= new EnumerateSettings().select().name("priority").value(priority).enumLabels(Priority.getenumLabels()).enumValues(Priority.getEnumValues()) %>' />
        </div>
      </div>
    </div>

  </div>
</div>

Il faut déclarer cette JSP dans le fichier plugin.xml pour qu'elle s'inclut dans la target :
<file path="jsp/apps/doLiveFormExtraItemsTarget.jsp" include="LIVEFORM_RENDER_FORMITEMS_BEFORE" />


Classe LiveFormResultListener qui écoute la création des LiveFormResult et qui crée un nouvel objet Result

public class LiveFormResultListener extends BasicDBListener {

  private static final Logger LOG = Logger.getLogger(LiveFormResultListener.class);

  @Override
  public void onPostInsert(DBData data, PostInsertEvent event, boolean firstTime) {
    if (firstTime && data instanceof LiveFormResult) {
      LiveFormResult lfr = (LiveFormResult) data;
      LiveForm liveForm = lfr.getLiveForm();

      Result result = new Result();
      result.setCdate(new Date());
      result.setMdate(new Date());
      result.setAuthor(lfr.getAuthor());
      result.setOpAuthor(lfr.getOpAuthor());
      result.setPriority(Util.getString((String[]) lfr.getExtraInfo("priority"), 0, "NORMAL"));
      result.setFormResult(lfr);
      result.performCreate(lfr.getAuthor());
    }
  }

}

Il faut déclarer cette dans le fichier plugin.xml
<dblistener class="com.jalios.jcmsplugin.myplugin.listener.LiveFormResultListener" types="com.jalios.jcmsplugin.liveform.model.LiveFormResult" />


Contenu de la JSP de résultat liveform-result.jsp

<%@page import="com.jalios.jcms.handler.JcmsFormHandler"%>
<%@page import="com.jalios.jcmsplugin.liveform.model.LiveFormResult"%>
<%@page import="com.jalios.jcmsplugin.liveform.LiveFormConstants"%>
<%@ include file="/jcore/doInitPage.jspf" %>
<jsp:usebean id="formHandler" scope="page" class="custom.ResultFormHandler">
  <jsp:setproperty name="formHandler" property="request" value="<%= request %>">
  <jsp:setproperty name="formHandler" property="response" value="<%= response %>">
  <jsp:setproperty name="formHandler" property="*">
</jsp:setproperty></jsp:setproperty></jsp:setproperty></jsp:usebean>
<%
Object persistAttr = request.getAttribute(LiveFormConstants.FORM_PERSIST_ATTR);
if(persistAttr != null) {
  formHandler.setFormResultPersist(Util.toBoolean(persistAttr, false));
}
Object lfAttr = request.getAttribute(LiveFormConstants.FORM_RESULT_ATTR);
if(lfAttr != null) {
  formHandler.setLiveFormResult((LiveFormResult) lfAttr);
}
LiveFormResult liveFormResult = formHandler.getAvailableLiveFormResult();
boolean persist = formHandler.isFormResultPersist();
%>
<p><%= persist %></p>
<p><%= liveFormResult.getId() %></p>
<p><%= liveFormResut.getExtraInfo("priority") %></p>


Contenu de la classe ResultFormHandler présente dans la JSP de résultat

public class ResultFormHandler extends JcmsFormHandler {
  
  private boolean persist;
  private LiveFormResult liveFormResult;

  private Result result;
  
  @Override
  protected void init() {
    super.init();

    if (isPersist()) {
      // If it's persisted, the result object is created in LiveFormResultListener.java
      try {
        Criteria criteria = HibernateUtil.getSession().createCriteria(Result.class);
        criteria.add(Restrictions.eq("formResult.rowId", liveFormResult.getRowId()));
        this.result = (Result) criteria.uniqueResult();
        this.resultId = result.getId();
      } catch (HibernateException e) {
        LOG.warn("Could not retrieve the JProcessRequest from the LiveFormResult with id '" + liveFormResult.getId() + "': " + e.getMessage(), e);
      }
    } else {
      LiveForm liveForm = liveFormResult.getLiveForm();
      this.result = new Result();
      this.result.setCdate(new Date());
      this.result.setMdate(new Date());
      this.result.setAuthor(liveFormResult.getAuthor());
      this.result.setOpAuthor(liveFormResult.getOpAuthor());
      this.result.setPriority(Util.getString((String[]) lfr.getExtraInfo("priority"), 0, "NORMAL"));
      this.result.setFormResult(liveFormResult);
      this.resultId = UUID.randomUUID().toString();
    }
  }

  public boolean isFormResultPersist() {
    return persist;
  }
  
  public void setFormResultPersist(boolean persist) {
    this.persist = persist;
  }
  
  public LiveFormResult getAvailableLiveFormResult() {
    return liveFormResult;
  }
  
  public void setFormResultId(String formResultId) {
    this.liveFormResult = channel.getData(LiveFormResult.class, formResultId);
  }
  
  public void setLiveFormResult(LiveFormResult liveFormResult) {
    this.liveFormResult = liveFormResult;
  }
  
  public getAvailableResult() {
    return result;
  }

}

Informations

Version
  • 3.2
Stabilité
  • Stable
Compatibilité
  • JPlatform 10
Certifié Jalios
  • Oui
Prix
  • Module payant
Support
  • Jalios Support
Auteur
  • Jalios SA
Licence
  • Jalios
Taille
  • 3,39 Mo
Mis-à-jour
  • 19/07/18
Téléchargements
  • 75
Domaines