Feuille de route XML - documentation technique

Un article de ScriptdigitalWiki.

Jump to: navigation, search

Feuille de route XML - Fichier XML - Documentation technique - Routines externes


Sommaire

Séquence des opérations

  • L'utilisateur charge la page feuillederoute.php du cours.
  • Le contrôleur feuillederoute_contr.inc est lancé.
  • Le contrôleur 'feuillederoute_contr.inc crée un nouvel objet avec la classe RoutinesInternes.

Cette classe comprend les méthodes par défaut de la feuille de route :

function inputcommentaire ($params)
function inputdate ($params)
function inputnote ($params)
function champformulaire_obtient ($utilisateurID, $coursID, 
                                     $champNom, $erreurReq=)
function champformulaire_insere ($utilisateurID, $coursID, 
                                    $champNom, $valeur, $erreurReq=)
function valideDate ($date) // valide les dates au format AAAA-MM-JJ
function valideNote ($note, $type='int')
function datechamp ($params)
function analyse_ref ($ref)
function valeurchamp ($params)


  • Le contrôleur feuillederoute_contr.inc crée un nouvel objet avec la classe RoutinesExternes.

La classe RoutinesExternes est spécifique à un cours et c'est là qu'on développe les méthodes liées à un cours donné (callbacks).

Il est à noter que cette classe a pour parent la classe RoutinesInternes, ce qui permet l'appel de méthodes de la classe RoutinesInternes dans les méthodes développées pour un cours.

Les méthodes champformulaire_obtient et champformulaire_insère ce qui permet à un tiers d'utiliser notre façon d'entreposer nos données (ainsi que notre bd évidemment).

  • Le contrôleur feuillederoute_contr.inc crée ensuite un objet de la classe FeuilleDeRouteXml dans lequel les objets créés à l'aide des RoutinesInternes et RoutinesExternes sont passés en référence.

Cette classe traite le fichier xml de la feuille de route et applique les routines de rappels qui proviennent, soit de RoutinesInternes, soit de RoutinesExternes.

  • Le contrôleur feuillederoute_contr.inc crée finalement les macros
 $MACRO['feuillederoute_affiche'] -> la feuille de route xml traitée
 $MACRO['feuillederoute_msgErreur'] -> les message d'erreurs.
  • La feuille de route est retournée à l'utilisateur.

Dépendances

Le cadre d'application Feuille de route XML fonctionne uniquement avec le cadre d'application Contrôle Accès.

ServicesWeb

Fichier

/servicesweb/lib/feuillederoute/feuillederoute.sql

Définition

Fichier SQL servant à créer les tables de la feuille de route dans la banque de données

Exemple

CREATE TABLE feuillederoute (
    utilisateur_id INT(10) UNSIGNED NULL,
    cours_id VARCHAR(80) NOT NULL DEFAULT '',
    clef VARCHAR(80) NOT NULL DEFAULT '',
    valeur VARCHAR(80) NOT NULL DEFAULT '',
    date TIMESTAMP(14) NOT NULL
);

Fichier

/servicesweb/configurations/global.inc

Définition

Options pour la banque de données.

Exemple

// FEUILLE DE ROUTE BD
$FEUILLEDEROUTE_BD['bdNom']          = "feuille_de_route";
$FEUILLEDEROUTE_BD['bdHote']         = "example.org";
$FEUILLEDEROUTE_BD['bdUsager']       = "Petit";
$FEUILLEDEROUTE_BD['bdMotDePasse']   = "Caniche";

Intégrateur

Pour intervenir sur la feuille de route d'un cours donnée, l'intégrateur se doit de comprendre le fichier xml de la feuille de route et sa relation avec les autres fichiers qui permettent d'afficher la feuille de route.

L'affichage de la feuille de route se fait en plusieurs étapes.

  • Le fureteur charge la feuille de route (par exemple )


feuillederoute.xml

Le fichier feuillederoute.xml correspondant à un cours donné est le coeur de la feuille de route. C'est avec ce fichier qu'on déterminera l'ordre de l'affichage, les gabarits employés et les routines utilisées.

Textes

Les textes dans le fichier feuillederoute.xml sont de deux types. Les titres qui sont des attributs des balises <section> et <element> et les textes proprement dit qui sont facultatifs et qui doivent être placés dans la balise <texte >.

Titres

Les titres des sections et les titres des éléments sont dans l'attribut titre de leur balise respective.

Exemple
<section titre="Tâche 1 Se familiariser avec le matériel informatique (3hr)">
<element titre="Vocabulaire relié à cette tâche (15 min)"> 

<textes>

Une section ou un élément peuvent contenir les balises <texte></texte>, ce qui permet d'ajouter des informations au titre d'une section ou d'un élément. L'emploi de la déclaration CDATA est conseillé pour les textes.

Exemple

<section titre="Introduction">
    <texte><![CDATA[ Ceci est du texte ]]></texte>
    <gabarit statique="./gabarits/section_statique.inc" />
</section>

<element titre="Introduction">
    <texte><![CDATA[ Ceci est du texte ]]></texte>
    <gabarit statique="./gabarits/element_statique.inc" />
</element>

Champs et formulaire

Pour créer un champ, il faut tout d'abord ajouter l'attribut idformulaire dans une balise <element> et spécifier une routine de rappel qui traitera les valeurs issues de ce champ. L'attribut idformulaire doit être unique et correspondra à un champ dans la banque de données. Il est facile de créér un identifiant unique à partir des titres des éléments. Il n'y a pas de contraintes dans la façon de créer un idformulaire à part le fait qu'il faut que son identifiant commence par une lettre. Dans le formulaire, l'idformulaire sera urlencodé pour prévenir tout problème.

Pour le moment le cadre d'application Feuille de route XML supporte 6 champs par élément.

Pour inclure plusieurs champs, il faut simplement suivre la nomenclature suivante.

  • idformulaire routineDeRappel champ 1
  • idformulaire2 routineDeRappel2 champ 2
  • idformulaire3 routineDeRappel3 champ 3
  • idformulaire4 routineDeRappel4 champ 4
  • idformulaire5 routineDeRappel5 champ 5
  • idformulaire6 routineDeRappel6 champ 6

Idéalement, essayez de réserver le nom d'un idformulaire pour le même type de champs et de routines de rappel. Cela facilitera l'édition de feuillederoute.xml. Par exemple, on peut décider de réserver idformulaire (le champ 1) pour les dates, et idformulaire2 pour les notes.

ATTENTION: Les données dans la banque de données sont associées au nom de l'idformulaire. Si vous changez le nom d'idformulaire, les données associées à ce nom dans la banque de données ne seront plus visibles (bien qu'elles ne seront pas détruites dans la banque de données). D'autre part, si deux idformulaire portent le même nom, cela produira un formulaire ayant des champs dont l'attribut name aura le même nom, ce qui empêchera la saisie des données de l'un de ces deux champs du formulaire, les valeurs associées au champ 2 écrasant les valeurs associées au champ 1.

Deux routines de rappel sont fournies avec le cadre d'application Feuille de route XML. L'une pour valider les dates (valideDate) et l'autre pour valider les notes (valideNote). Il est possible pour un tiers parti d'ajouter sa propre routine de rappel. Nous reviendrons un peu plus bas sur les routines de rappel.

Exemple

<element titre="Vocabulaire relié à cette tâche (15 min)" 
    idformulaire="tâche-1: vocabulaire" routineDeRappel="valideDate"
    idformulaire5="T1-vocabulaire-crochet-virtuose" routineDeRappel5="virtuose_crochet"
    idformulaire6="T1-vocabulaire-virtuose" routineDeRappel6="virtuose_dateReelle">
    <gabarit apprenant_formulaire="./gabarits/element_apn_formulaire.inc" />
    <gabarit formateur_formulaire="./gabarits/element_fmt_formulaire.inc" />
</element>

<element    titre="Activité notée 1 (15 min)" 
            idformulaire="tâche-1: activité noté 1: date" 
            routineDeRappel="valideDate" 
            idformulaire2="tâche-1: activité noté 1: note" 
            routineDeRappel2="valideNote"
            idformulaire5="T1-note-crochet-virtuose" 
            routineDeRappel5="virtuose_crochet"
            idformulaire6="T1-note-virtuose" 
            routineDeRappel6="virtuose_dateReelle">
    <gabarit apprenant_formulaire="./gabarits/element_apn_note.inc" />
    <gabarit formateur_formulaire="./gabarits/element_fmt_note.inc" />
</element>

Gabarits

Chaque <section> ou <element> doit posséder son gabarit. Il est crucial de noter que si dans feuillederoute.xml, les unités <section> et <element> sont dans un rapport hiérarchique, l'unité <section> contenant l'unité <element>, l'affichage dans l'interface Web n'est pas obligé de tenir compte de cette relation hiérarchique. La seule chose pertinente au point de vue de l'affichage est la consécutivité des sections et des éléments dans feuillederoute.xml, c.-a.-.d. que la section 1 sera d'abord affichée, suivi des éléments qu'elle contient si c'est le cas, puis de la section 2, et ainsi de suite. Pour simplifier, feuillederoute.xml ordonne la séquence des sections et des éléments, mais les gabarits sont indépendants de ces séquences. Cela deviendra plus clair en lisant le reste de ce document.

Type d'utilisateurs et gabarits

Le nom des attributs pour les gabarits représente en quelque sorte trois modes qui répondent au type d'utilisateur. D'autres modes pourront être ajoutés si cela est nécessaire. La valeur de l'attribut pointe vers le fichier étant le gabarit pour la section ou l'élément spécifié.

  • statique -> Même gabarit que l'utilisateur soit un apprenant, un formateur ou un formateur en exploration.
  • apprenant_formulaire -> L'utilisateur est un apprenant ou un formateur en exploration.
  • formateur_formulaire -> L'utilisateur est un formateur en encadrement.

Si un attribut apprenant_formulaire est spécifié, il faut absolument spécifier l'attribut formateur_formulaire et vice-versa. L'attribut statique doit être le seul attribut de gabarit pour un élément ou une section.

Exemple

<!-- une section avec un gabarit statique mais ne comprenant pas d'éléments -->

<section titre="Introduction">
    <gabarit statique="./gabarits/section_statique.inc" />
</section>

<!-- une section avec un gabarit statique mais  comprenant des éléments -->


<section titre="Tâche 1 Se familiariser avec le matériel informatique (3hr)">

    <gabarit statique="./gabarits/section_retractable.inc" />
    
    <element titre="Introduction">
        <gabarit statique="./gabarits/element_statique.inc" />
    </element>
    
<!-- une section comprenant des gabarits liés à l'utilisateur -->
    
<element titre="Vocabulaire relié à cette tâche (15 min)" 
    idformulaire="tâche-1: vocabulaire" routineDeRappel="valideDate"
    idformulaire5="T1-vocabulaire-crochet-virtuose" routineDeRappel5="virtuose_crochet"
    idformulaire6="T1-vocabulaire-virtuose" routineDeRappel6="virtuose_dateReelle">
    <gabarit apprenant_formulaire="./gabarits/element_apn_formulaire.inc" />
    <gabarit formateur_formulaire="./gabarits/element_fmt_formulaire.inc" />
</element>

Quelques trucs

  • On ne peut mettre du code PHP directement dans un gabarit, car celui-ci ne sera pas interprété.
  • Pour éliminer l'affichage d'un gabarit selon le type d'utilisateur, pointer vers un fichier vide.

Exemple

<element titre="commentaire 1" idformulaire="tâche 1: commentaire formateur">
    <gabarit apprenant_formulaire="./gabarits/element_apn_commentaire.inc" />
    <gabarit formateur_formulaire="./gabarits/element_fmt_commentaire.inc" />
</element>

<element titre="bouton enregistrer">
    <gabarit apprenant_formulaire="./gabarits/gabarit_vide.inc" />
    <gabarit formateur_formulaire="./gabarits/element_fmt_bouton_enreg.inc" />
</element>

Ici, le gabarit pour l'élément qui sert a afficher le commentaire du formateur pointe vers un gabarit pour l'apprenant qui ne fait qu'afficher le commentaire, tandis que le gabarit pour le formateur permet d'insérer son commentaire. Le bouton "Enregistrer" n'apparaîtra qu'au formateur et pas à l'apprenant.

Format des gabarits

Un gabarit représente une section ou un élément de feuillederoute.xml. Il possède en outre des macros de substitutions (par exemple {titre}) qui seront remplacées par des valeurs provenant soit (a) du fichier feuillederoute.xml, (b) de la banque de données, (c) du formulaire, (d) de la routine externe d'un tiers parti.

À chaque section ou élément, le cadre d'application Feuille de route XML lira le fichier de gabarit correspondant à l'unité et le contexte, et remplacera les macros de substitutions par de nouvelles valeurs.

Les macros de substitutions fonctionnent selon le contexte et l'unité traitée. La seule macro de substitution qui est toujours présente est {titre}.

Macros de substitution

  • {titre} -> toujours présente avec <section> et <element>
  • {id_section} -> seulement avec <section> -> identifiant unique de la section pour le DOM/CSS/Javascript
  • {nombreElementsSection} -> seulement avec <section> -> nombre d'éléments contenus dans cette section.
  • {id_element} -> seulement avec <element> -> identifiant unique de l'élément pour le DOM/CSS/Javascript
  • {texte} -> <section> ou <element>
  • {champ_valeur} -> <element> si idformulaire est défini dans feuillederoute.xml
  • {champ_valeur2} -> <element> si idformulaire2 est défini dans feuillederoute.xm
  • {champ_valeur3} -> <element> si idformulaire3 est défini dans feuillederoute.xm
  • {champ_valeur4} -> <element> si idformulaire4 est défini dans feuillederoute.xm
  • {champ_valeur5} -> <element> si idformulaire5 est défini dans feuillederoute.xm
  • {champ_valeur6} -> <element> si idformulaire6 est défini dans feuillederoute.xm
  • {id_formulaire} -> <element> si idformulaire est défini dans feuillederoute.xm
  • {id_formulaire2} -> <element> si idformulaire2 est défini dans feuillederoute.xm
  • {id_formulaire3} -> <element> si idformulaire3 est défini dans feuillederoute.xm
  • {id_formulaire4} -> <element> si idformulaire4 est défini dans feuillederoute.xm
  • {id_formulaire5} -> <element> si idformulaire5 est défini dans feuillederoute.xm
  • {id_formulaire6} -> <element> si idformulaire6 est défini dans feuillederoute.xm
  • {erreur} -> gabarit pour les erreurs

Exemple: <element> avec gabarit pour l'apprenant

<table border="1" cellpadding="4" cellspacing="4" width="800" id="{id_element}">
    <tr>
        <td width="25">
        <!-- crochet -->
            {champ_valeur5}
        </td>
        
        <td width="400">
        <!-- titre -->
            {titre}
        </td>
       
        <td width="125" align="center">
        <!-- date de fin prevue -->
            <input name="{id_formulaire}" type="text" size="10" maxlength="10" value="{champ_valeur}">
        </td>
        
        <td width="125">
        <!-- date de fin reelle -->
            {champ_valeur6}
        </td>
        
        <td width="125">
        <!-- note -->
             
        </td>
    <tr>
 </table>

Exemple: <element> avec gabarit pour le formateur

<table border="1" cellpadding="4" cellspacing="4" width="800" id="{id_element}">
    <tr>
        <td width="25">
        <!-- crochet -->
            {champ_valeur5}
        </td>
        
        <td width="400">
        <!-- titre -->
            {titre}
        </td>
       
        <td width="125" align="center">
        <!-- date de fin prevue -->
            {champ_valeur}
        </td>
        
        <td width="125">
        <!-- date de fin reelle -->
            {champ_valeur6}
        </td>
        
        <td width="125">
        <!-- note -->
             
        </td>
    <tr>
 </table>

Gabarits disponibles

Afin de tester Feuille de route XML, j'ai créé une série de gabarits qui couvrent plusieurs situations de l'interface Web.

/sites/feuillesderoute/W-TEST-01/gabarits/

J'utilise apn pour apprenant et fmt pour formateur.

Gabarits utilisés dans les tests

  • element_apn_bouton_enreg.inc
    • Gabarit pour l'attribut apprenant_formulaire de la balise <element> dans laquelle est le bouton enregistrer qui apparaît uniquement à l'apprenant.
  • element_apn_commentaire.inc
    • Gabarit pour l'attribut apprenant_formulaire de la balise <element> dans laquelle apparaît le commentaire du formateur.
  • element_apn_formulaire.inc
    • Gabarit pour l'attribut apprenant_formulaire de la balise <element> dans laquelle apparaît les champs du formulaire de la feuille de route.
  • element_apn_note.inc
    • Gabarit pour l'attribut apprenant_formulaire de la balise <element> dans laquelle apparaît la note donnée par le formateur.
  • element_fmt_bouton_enreg.inc
    • Gabarit pour l'attribut formateur_formulaire de la balise <element> dans laquelle apparaît le bouton enregistrer qui n'apparaît qu'au formateur.
  • element_fmt_commentaire.inc
    • Gabarit pour l'attribut formateur_formulaire de la balise <element> dans laquelle apparaît le commentaire du formateur,
  • element_fmt_formulaire.inc
    • Gabarit pour l'attribut formateur_formulaire de la balise <element> dans laquelle apparaît les champs du formulaire de la feuille de route.
  • element_fmt_note.inc
    • Gabarit pour l'attribut formateur_formulaire de la balise <element> dans laquelle apparaît la note donnée par le formateur.
  • element_statique.inc
    • Gabarit pour l'attribut statique de la balise <element> dans laquelle apparaît un titre par exemple.
  • gabarit_vide.inc
    • Gabarit pour l'attributapprenant_formulaire ou formateur_formulaire de la balise <element> que l'on désire montrer/cacher selon le type d'utilisateur (apprenant, formateur).
  • msg_erreurs.inc
    • Gabarit de l'attribut gabarit de la balise <message_erreurs> contenu dans la balise <informations>.
  • section_retractable.inc
    • Gabarit de l'attribut statique d'une section qui contiendra des balises <element>.
  • section_statique.inc
    • Gabarit des sections n'ayant pas de balises <element>.
  • section_statique_texte.inc
    • Gabarit montrant comment se servir de la balise <texte> qui peut exister dans la balise <section>.

Champs et formulaire

Dans les deux précédents exemples, on peut voir comment créer un champ de formulaire.

Dans le premier exemple, le gabarit utilisé par l'apprenant, deux macros de substitutions sont employées pour générer un champ <input> de type 'text'.

        <td width="125" align="center">
        <!-- date de fin prevue -->
            <input name="{id_formulaire}" type="text" size="10" maxlength="10" value="{champ_valeur}">
        </td>

Tandis que dans le second exemple, le gabarit utilisé par le formateur, seule la valeur insérée par l'apprenant est affichée sans possibilité de modifications de la part du formateur.

       <td width="125" align="center">
        <!-- date de fin prevue -->
            {champ_valeur}
        </td>

Remarquons que l'attribut name de la balise <input> est la macro de substitution {id_formulaire}. Vous ne pouvez vous servir d'un autre nom pour votre formulaire si vous désirez conserver les données. {id_formulaire} sera remplacé par la valeur urlencodé de feuillederoute.xml, tandis que {champ_valeur} sera remplacé par la valeur conservée dans la banque de données (voir plus loin la section Routines de rappel pour plus de détail).

Il est très important de comprendre qu'un formulaire fonctionne toujours en couple avec {champ_valeur} et qu'il est important de bien "accoupler" ces macros, c.-a.-d. de faire correspondre à {id_formulaire2} à {champ_valeur2} et ainsi de suite.

Routines de rappel externes ou des tiers partis

Au coeur du cadre d'application Feuille de route XML se trouve la classe Feuillederoute.

Cette classe n'est pas initialisée directement, mais est la classe parente de la classe RoutinesDeRappelExternes.

C'est dans le fichier de cette classe qu'un tiers parti peut ajouter une routine de rappel pour modifier/afficher des valeurs liées au champ.

Fichier : /ext/feuillesderoute/SIGLEDUCOURS/feuillederoute.php

Voici un exemple de la classe RoutinesDeRappelExternes.

 1  class RoutinesDeRappelExternes extends Feuillederoute {
 2 
 3      function RoutinesDeRappelExternes (&$Unserializer, $fichier_xml) {
 4      
 5          # >> NE PAS MODIFIER >>
 6          $this->Feuillederoute (&$Unserializer, $fichier_xml);
 7          # << NE PAS MODIFIER <<
 8          
 9          // Mettre le nom de la fonction externe dans le tableaux 
10          // des proprietes routinesDeRappel de Feuillederoute
11          $this->routinesDeRappel['virtuose_dateReelle']  = 'virtuose_dateReelle';
12          $this->routinesDeRappel['virtuose_crochet']     = 'virtuose_crochet';
13     
14      }
15      
16      
17      // appelle par la classe parente si le nom de la fonction 
18      // est dans le tableau des proprietes routinesDeRappel
19      function virtuose_dateReelle ($valeur) {
20          
21          // $valeur correspond a un champ de formulaire
22          // s'il n'y a pas de champ defini, $valeur est un string vide
23          // pour tester en mode formulaire
24          // if (is_numeric ($valeur)) {$valeur = $valeur + 1;}
25          
26          // $valeur est retourne a Feuillederoute et c'est ce qui s'affichera
27          // traitez $valeur ici
28          $valeur = "virtuose_dateReelle code-moi! ". date ("H:i:s");
29  
30          return array ('valide' => true, 'champ_valeur' => $valeur);
31      }
32      
33      function virtuose_crochet ($valeur) {
34  
35          $valeur = "virtuose_crochet code-moi! ". date ("H:i:s");
36  
37          return array ('valide' => true, 'champ_valeur' => $valeur);
38      }
39  }

Le contrôleur de la feuille de route va d'abord initialiser la classe RoutinesDeRappelExternes qui elle instanciera la classe parente Feuillederoute (ligne 6).

Ensuite, une fois la classe Feuillederoute initialisée, on modifie son tableau des propriétés RoutinesDeRappel avec le nom de la routine de rappel qu'on désire utiliser (ligne 11-12). Il faut impérativement que l'index du tableau et sa valeur soient les mêmes.

Ensuite, il ne suffit plus que de nommer la fonction en conservant les mêmes noms qu'à l'étape précédente.

Le paramètre des routines de rappel externes (lignes 19 et 33) est une chaîne de caractère qui est vide si la valeur ne provient pas d'un formulaire. Si la valeur provient d'un formulaire, la valeur aura la valeur insérée par l'utilisateur.

Une routine de rappel externe doit toujours retourner un tableau composé au minimum de la clef 'valide' ayant pour valeur 'true'. En outre, une routine de rappel n'aurait aucun sens si celle-ci ne pouvait modifier la valeur reçue en paramètre s'il y en a une, ou générer sa propre valeur. Il faut alors ajouter la clef 'champ_valeur' et la valeur désirée (lignes 30 et 37). Il est alors facile pour un tiers parti de faire appel à son propre cadre d'application, ses propres banques de données pour générer une valeur qui apparaîtra dans la feuille de route.

Les routines de rappel ne concernent que les champs qui sont définis par l'attribut idformulaire dans le fichier feuillederoute.xml (voir plus haut).

Ici par exemple, les champs ont été prédéfinis dans feuillederoute.xml de la manière suivante:

<element titre="Vocabulaire relié à cette tâche (15 min)" 
    idformulaire="tâche-1: vocabulaire" routineDeRappel="valideDate"
    idformulaire5="T1-vocabulaire-crochet-virtuose" routineDeRappel5="virtuose_crochet"
    idformulaire6="T1-vocabulaire-virtuose" routineDeRappel6="virtuose_dateReelle">
    <gabarit apprenant_formulaire="./gabarits/element_apn_formulaire.inc" />
    <gabarit formateur_formulaire="./gabarits/element_fmt_formulaire.inc" />
</element>

Et l'un des gabarits pour être comme suit.

<table border="1" cellpadding="4" cellspacing="4" width="800" id="{id_element}">
    <tr>
        <td width="25">
        <!-- crochet -->
            {champ_valeur5}
        </td>
        
        <td width="400">
        <!-- titre -->
            {titre}
        </td>
       
        <td width="125" align="center">
        <!-- date de fin prevue -->
            <input name="{id_formulaire}" type="text" size="10" maxlength="10" value="{champ_valeur}">
        </td>
        
        <td width="125">
        <!-- date de fin reelle -->
            <!-- <input name="{id_formulaire6}" type="text" size="10" maxlength="10" value="{champ_valeur6}"> -->
            {champ_valeur6}
        </td>
        
        <td width="125">
        <!-- note -->
             
        </td>
    <tr>
 </table>

Macros

Les macros sont appelées par le fichier qui est servi directement par la feuille de route (par exemple feuillederoute.php). Ce fichier devra avoir le code suivant en en-tête.

 1 <?php
 2 #################################################################
 3 # feuillederoute.php
 4 # $Date$ - $RCSfile$ - $Revision$
 5 #################################################################
 6 include_once ('../../../configurations/global.inc');
 7 include_once ($ENV_SERVICESWEB['conf_edusofad']); // rendra visible $ENV_SOFAD et $ENV_CONTROLEACCES
 8 include_once ($ENV_SOFAD['controleAcces_contr_inc']);
 9 include_once ($ENV_SERVICESWEB['feuillederouteLib_contr_inc']);
10 ?>

La ligne 6 doit pointer vers le fichier de configuration qui est à /configuration/global.inc. Les chemins relatifs sont préférés pour le chemin menant au global.inc principal.

La ligne 7 rend visible l'environnement de Contrôle Accès, tandis que la ligne 8 lance Contrôle Accès. Si la session est invalide, l'utilisateur sera redirigé vers le portail. Le cadre d'application Feuille de route XML fonctionne uniquement sous Contrôle Accès qui gère les utilisateurs et leurs propriétés (id, courriel, nom, statut).

La ligne 9 appelle le contrôleur de la feuille de route qui génèrera une instance de la classe Feuillederoute (à proprement parler la classe RoutinesDeRappelExternes). Le contrôleur se servira alors des méthodes de Feuillederoute pour lire le XML de feuillederoute.xml, le normaliser dans la propriété outlines.

La propriété outlines vaut la peine d'être exploré. C'est une représentation dans un tableau du fichier feuillederoute.xml.Voici quelques exemples.


# titre de la première section
$FDR->outlines['activité'][0]['section'][0]['titre']

#titre du premier élément de la première section
$FDR->outlines['activité'][0]['section'][0]['element'][0]['titre']


$MACRO['feuillederoute_affiche']

Définition

Affiche la feuille de route contenu dans feuillederoute.xml après avoir converti tous les gabarits qui lui sont liées.

Affiche

string XHTML/HTML'

Exemple

<?php echo $MACRO['feuillederoute_affiche'] ?>

$MACRO['feuillederoute_msgErreur']

Définition

Affiche le nom du champ et l'erreur qui lui est liée après avoir converti le gabarit défini dans feuillederoute.xml et être passé par la routine de rappel. Pour le moment, les routines externes ne peuvent utiliser cette macro.

Affiche

string ERREUR

Exemple

<?php echo $MACRO['feuillederoute_affiche'] ?>

==> "<strong>Tâche 1: Introduction à OS X: Erreur: Note invalide</strong>"

Configuration

$MSG_ERREURS['erreur_noteInvalide'] = 'Erreur: Note invalide';
Fichier

/servicesweb/configuration/msg_erreur_fr.inc

$MACRO['feuillederoute_onLoad']

Définition

Permets à la fonction Javascript de rétracter tous les éléments de l'outline quand une page est chargée.

Affiche

string appel fonction Javascript

Exemple

<body onload="invisible_elementsSection('activite.0.section.1', 10);invisible_elementsSection('activite.0.section.2', 2);invisible_elementsSection('activite.0.section.3', 16);invisible_elementsSection('activite.0.section.4', 2);">

Fonction Javascript invisible_elementsSection (section, nombreElementsSection)

    function invisible_elementsSection (nomElement, nombreElements) {
             
        //return;
                
        compteur = 0;
        while (compteur < nombreElements) {
            nomElem = nomElement + ".element." + compteur;
            try {
                document.getElementById(nomElem).style.display  = "none";
            }
            catch (erreur) {
            ;
            }
            compteur++;
        }
    }

Fichiers et répertoires liés au cadre d'application Feuille de route XML [maj mineure]

Feuille de route XML ne peut pas fonctionner sans Contrôle Accès.

/servicesweb/sites/feuillesderoute/SIGLEDUCOURS/

  • feuillederoute.php
  • /gabarits/
  • /XML/feuillederoute.xml

/servicesweb/lib/feuillederoute/

  • Feuillederoute.inc -> classe
  • feuillederoute.sql -> sql
  • feuillederoute_contr.inc -> contrôleur
  • RoutinesDeRappelExternes.inc -> routines de rappel externes

/servicesweb/lib/PEAR/

En particulier:

  • XML/Parser.php
  • XML/Serializer.php
  • XML/Unserializer.php
  • XML/Util.php
  • XML/XML_Parser:
  • XML/XML_Serializer:
  • XML/XML_Util:

/servicesweb/configurations/

  • global.inc