44
SPIP-XML.doc 1/44 Traitement de FICHES XML dans une application construite sur SPIP François HAMONNO [email protected]

Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 144

Traitement de FICHES XML

dans une application construite sur SPIP

Franccedilois HAMONNOfhamonnoclub-internetfr

SPIP-XMLdoc 244

Table des matiegraveres

1 Objectifs 3

2 Utilisation des laquo Fiches XML raquo 421 Inteacutegration agrave SPIP le filtre laquo processXML raquo 4

22 Utilisation du filtre laquo processXML raquo par lrsquoapplication 4

23 Les paramegravetres drsquoenvironnement du filtre laquo processXML raquo 5

24 Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip 7

3 Principes de traitement des laquo Fiches XML raquo 931 Le type dune FICHE XML 9

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquo 9

33 Le contenu dun modegravele de FICHE XML 10

34 Le traitement drsquoune FICHE XML les laquo parsers raquo 11

4 La distribution laquo SPIP ndash XML raquo 1341 Les composants 13

Les fichiers drsquoinstallation 13Les squelettes de lrsquoexemple laquo Devis raquo 13Le filtre laquo processXML raquo et le traitement des fiches XML 15

42 La mise en œuvre de lrsquoinstallation Installer les fichiers 19

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base 20

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo 21

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs25

Balise ltDocumentXMLgt 25

Balise ltCadregt 28

Balise ltTitregt 30

Balise ltnom_champgt 31

Annexe 2 - Exemple de FICHE XML complegravete Description drsquoun projet desolidariteacute 37

SPIP-XMLdoc 344

1 Objectifs

Le package deacutecrit ici srsquoadresse agrave ceux qui souhaitent utiliser SPIP ( httpwwwspipnet ) pour manipuler desobjets (fiches techniques par exemple) dont les attributs (ou champs) ne correspondent pas agrave ceux geacutereacutes parce systegraveme de publication titre sous-titre chapeau texte hellip

Lrsquoobjectif est alors de pouvoir conserver SPIP comme structure daccueil en associant un article ou unerubrique agrave chacun de ces objets

Ceci est possible en utilisant un codage XML de lrsquoobjet (ou plutocirct de ses attributs) cette repreacutesentation delrsquoobjet eacutetant stockeacutee dans le corps drsquoun article ou drsquoune rubrique SPIP qui lui sera associeacute

Le couple SPIP+XML est particuliegraverement performant puisquil allie dune part une gestion globale de lobjeten tant quarticle ou rubrique SPIP hieacuterarchie mots-cleacutes indexation forum hellip et dautre part une gestionapplicative de lobjet en tant quensemble de champs formulaire de saisie affichage et traitementspersonnaliseacutes

NB Pour faciliter la compreacutehension de la suite de ce document au lieu de parler dobjets ayant des attributs ouchamps nous parlerons de Fiches descriptives ou plus simplement de Fiches XML

SPIP-XMLdoc 444

2 Utilisation des laquo Fiches XML raquo

21 Inteacutegration agrave SPIP le filtre laquo processXML raquoLes fiches descriptives seront codeacutees en XML dans le champ laquo Texte raquo dun article ou dune rubrique SPIP enexploitant toutes les fonctionnaliteacutes offertes par SPIP pour classer acceacuteder et rechercher ces articles ourubriques

De plus agrave chaque type de fiche sera associeacute un modegravele qui deacutecrira agrave la fois laffichage et la saisie de chacunde ses champs

Dans la pratique toutes les balises SPIP pouvant avoir un contenu XML pourront ecirctre traiteacutees par le filtreprocessXML

Le traitement de mise en page normalement effectueacute par SPIP sera inhibeacute en faisant suivre le nom de la balisepar une asteacuterisque (cf documentation Spip laquoMise en page Manuel de reacutefeacuterenceraquo Court-circuiter letraitement par Spip)

NB Dans le cas ougrave la balise ne contiendrait pas de code XML la mise en page standard de SPIP (filtre propre) seraeffectueacutee par le filtre processXML

Par exemple Affichage du texte dun article ou drsquoune rubrique

[(TEXTE|processXML)]

Afin drsquoidentifier le traitement agrave effectuer sur le contenu XML drsquoune fiche ce dernier commencera par la baliseXML laquo ltDocumentXMLgt raquo deacutecrite plus loin

ltDocumentXML TypeDocXML=Type_de_fiche Handler=parsergt

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne de la fiche descriptive dun devis ltDocumentXML TypeDocXML=DevisPiscine Handler=FicheXMLgt

NB Si les donneacutees traiteacutees par le filtre processXML ne commencent pas par la balise ltDocumentXMLgt les donneacuteessont retourneacutees agrave SPIP inchangeacutees apregraves application du filtre Spip laquopropreraquo

22 Utilisation du filtre laquo processXML raquo par lrsquoapplication

Le code PHP laquoapplicatifraquo pourra appeler la fonction processXML() pour afficher un document XML contenudans une variable PHP (comme lors de lutilisation du filtre par Spip)

Par exemple $dataHTML = processXML($dataXML) echo $dataHTML

SPIP-XMLdoc 544

23 Les paramegravetres drsquoenvironnement du filtre laquo processXML raquo

Plusieurs variables globales sont utiliseacutees pour controcircler le traitement drsquoune laquo Fiche XML raquo

$xml_TypeFicheXML Le type de la fiche (au choix de lrsquoapplication) $xml_ObjetSpip Lrsquoobjet Spip qui contient ou contiendra la fiche ( =rsquoarticlersquo ou =rsquorubriquersquo ) $xml_ParamsObjetSpip Paramegravetres pour la creacuteation drsquoun nouvel objet Spip contenant la fiche saisie

Syntaxe des formulaires html - Si objet rsquorubriquersquo alors = rsquoid_secteur=xxxampid_rubrique=0rsquo- Si objet rsquoarticlersquo alors = rsquoid_secteur=xxxampid_rubrique=xxxampid_article=0rsquo

Ces variables sont normalement renseigneacutees par le filtre laquo processXML raquo

Exeacutecution du filtre par Spip

Lorsque Spip exeacutecute le filtre laquo processXML raquo ce dernier appelle la proceacutedure laquo setParamsXml() raquo quirenseigne ces variables globales en fonction du contexte en cours

Les variables $xml_ObjetSpip et $xml_ParamsObjetSpip seront renseigneacutees en exploitant le contexte Spip nom du squelette en cours drsquoexeacutecution id de lrsquoarticle ou de la rubrique en cours de traitement et paramegravetresassocieacuteshellip

Le laquo Type de Fiche XML raquo sera le mot-cleacute de lrsquoarticle ou de la rubrique en cours de traitement appartenantau groupe de mots-cleacutes laquo TypeFicheXML raquo

Le laquo Modegravele de Fiche XML raquo agrave traiter sera donneacute par lrsquoarticle Spip ayant le mot-cleacute laquo ModeleFicheXML raquo etayant son SURTITRE=rsquoModeleltType de Fiche XMLgtrsquo (par ex lsquoModeleFicheClientrsquo ou lsquoModeleDevisPiscinersquo)

Rappel Lrsquoarticle ou la rubrique contenant une laquo fiche XML raquo commence toujours par la balise XML ltDocumentXML TypeDocXML=Type_de_fiche XML hellipgt

Renseignement du lien vers la creacuteation drsquoune nouvelle fiche

La proceacutedure laquo setParamsXml($typeFicheXML $id_article_modele) raquo doit ecirctre appeleacutee pour obtenir lrsquourl dulien vers le formulaire de creacuteation drsquoune nouvelle ficheLes paramegravetres (optionnels) sont

$typeFicheXML Type de laquo Fiche XML raquoSi vide sera renseigneacute avec la valeur du mot-cleacute laquo TypeFicheXML raquo associeacute agravelrsquoobjet Spip en cours donneacute par $xml_ObjetSpip

$id_article_modele Id de lrsquoarticle Spip contenant le modegravele agrave traiterSi vide sera lrsquoid de lrsquoarticle de mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo etde laquo SURTITRE=rsquoModelelttype de fiche XMLgtrsquo raquo

$xml_ObjetSpip Objet Spip qui contiendra la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves le squelette encours (cf $PHP_SELF)

SPIP-XMLdoc 644

$xml_ParamsObjetSpip Paramegravetres agrave utiliser pour visualiser la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves la laquo FicheXML raquo en cours si elle existe

Lrsquoappel agrave laquo setParamsXml() raquo renseignera en retour la variable globale $lienNewFicheXML avec lrsquourl rechercheacute

Exemple de code affichant les liens de creacuteation de laquo Devis raquo dans le squelette laquo rubriquehtml raquohellip hellip hellip hellip hellip hellip hellip hellip helliplt mdashRechercher la rubrique agrave traiter ltBOUCLE_principale(RUBRIQUES)id_rubriquedoublonsgtlt php Meacutemoriser le ndeg de la rubrique agrave traiter container et son secteur NB On suppose qursquoelle contient des devishellip et on veut afficher les liens vers de nouveaux devis $id_rub = ID_RUBRIQUE $id_sect = ID_SECTEUR $fiches = array() $i = 0------------------------------------------------------ Rechercher les modegraveles de devis (type de fiche laquo DevisXXXX raquo) Conventions =gt Les modegraveles sont des articles de mot-cleacute laquo ModeleFicheXML raquo =gt Le type de modegravele est dans le surtitre et il est de la forme laquo ModeleDevisXXX raquo =gt Le texte agrave afficher pour le lien est dans le titre =gt Le code XML agrave traiter est dans le texte------------------------------------------------------gt ltBOUCLE_ModelesFiches(ARTICLES)titre_mot=ModeleFicheXMLgtlt php $modele = SURTITRE if ( strpos(_$modele _ModeleDevis)==1 ) $modele commence par lsquoModeleDevisrsquo $typeFiche = substr($modele strpos($modele Modele ) $typeFiche=rsquoDevisXXXXrsquo $fiches[$i][texte] = [(TITRE|texte_script)] Conserver le laquo titre raquo du modegravele

Renseigner les variables drsquoenvironnement pour laquo setparamsXML() raquo $xml_ObjetSpip = article Les devis seront dans des articles $xml_ParamsObjetSpip = id_rubrique=$id_rubampid_secteur=$id_sectampid_article=0 setParamsXML($typeFiche ID_ARTICLE) Renseigner le lien $lienNewFicheXML

Renseigner les liens pour la creacuteation de fiches $fiches[$i][lien] = $lienNewFicheXML $i++ Fin if ( strpos(_$modele _ModeleDevis)==1 )gt ltBOUCLE_ModelesFichesgthellip hellip hellip hellip hellip hellip hellip hellip hellipltphp foreach ($fiches as $fiche) Balayer les liens meacutemoriseacutes Afficher les liensgt ltA HREF=lt=$fiche[lien]gt gt lt=$fiche[texte]gt ltAgt ltBR gtltphp gthellip hellip hellip hellip hellip hellip hellip hellip hellip

SPIP-XMLdoc 744

24 Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip

Des modegraveles drsquoimportation respectant la syntaxe (xml aussi) des exportations de la base reacutealiseacutees par Spipsont utiliseacutes pour importer les objets Spip (rubrique article mots-cleacutes hellip) associeacutes agrave une laquo Fiche XML raquo

Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip ainsi que la sauvegarde de ses modifications sont reacutealiseacutees par laproceacutedure laquo importObjectIntoSpip($objetAppli $attributs $pathToImportDir) raquo appeleacutee avec lesparamegravetres suivants

$objetAppli Objet applicatif agrave creacuteer ou mettre agrave jour =gt Les modegraveles dimportation seront trouveacutes - via la variable globale $import_$objetAppli - ou dans le fichier $pathToImportDirimport_$objetAppli_StdxmlNB La variable globale $import_$objetAppli donnera la liste des fichiersimport_xxxxml du reacutepertoire $pathToImportDir qui devront ecirctre traiteacutes pourreacutealiser lrsquoimportation de lrsquoobjet applicatif

$attributs Tableau associatif contenant la valeur de chaque laquo champ raquo de la laquo Fiche XML raquo $attributs[ltchampgt] = ltvaleur champgtLes champs lsquoltchampgtrsquo preacutesents dans les modegraveles drsquoimportation seront remplaceacutespar $attributs[ltchampgt] avant de donner ce modegravele agrave traiter agrave la proceacutedure Spipdrsquoimportation (cf import_objet() )

$pathToImportDir Chemin relatif au site vers le reacutepertoire contenant les modegraveles drsquoimportationCe paramegravetre est optionnel si vide il sera renseigneacute avec la valeur du paramegravetrePathToImportModels de la table MySQL laquo spip_params_appli raquo Si ce dernierparamegravetre est vide alors $pathToImportDir = rsquoToolsModeles_importrsquo

NB La proceacutedure utilise aussi la variable globale laquo $userId raquo donnant lrsquoid de lrsquoauteur Spip identifieacute

Avant importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera la valeur des attributs suivants srsquoilsne sont pas deacutejagrave renseigneacutes

bull $attributs[Heure] = lthh mm ssgt 135723bull $attributs[DateJour] = ltaaaa-mm-jjgt 2002-01-15bull $attributs[Date] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateRedac] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateFr] = ltjjmmaaaagt 15012002bull $attributs[lsquoid_auteurrsquo] = $userId id de lrsquoauteur Spip identifieacutebull $attributs[idAuteurModif] = $userId si creacuteation drsquoune nouvelle fiche

et pour chaque mots-cleacutes laquo ltmotgt raquo existant bull $attributs[id_mot_ltmotgt ] = ltid du mot-cleacutegtbull $attributs[id_groupe_ltmotgt ] = ltid du groupe contenant le mot-cleacutegtbull $attributs[nom_groupe_ltmotgt ] = lttype du mot-cleacutegt

Pour effectuer lrsquoimportation la proceacutedure laquo importObjectIntoSpip() raquo remplacera dans chaque modegraveledrsquoimportation agrave traiter les chaicircnes lsquoxxxrsquo par la valeur de lrsquoattribut $attributs[lsquoxxxrsquo] puis appelera laproceacutedure Spip import_objet() avec ce modegravele en paramegravetre

SPIP-XMLdoc 844

Apregraves importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera pour le 1er objet importeacute dans Spipla valeur des attributs suivants

bull $attributs[first_objetSpip] = rubrique ou article ou bull $attributs[first_id_rubrique] ou $attributs[first_id_article] ou bull $attributs[id_rubrique] ou $attributs[id_article] ou

et retournera une valeur lsquovraiersquo si lrsquoimportation srsquoest bien passeacute En cas drsquoerreur la variable globale$errNouvelleFiche contiendra le message drsquoerreur

SPIP-XMLdoc 944

3 Principes de traitement des laquo Fiches XML raquo

31 Le type dune FICHE XMLOn peut ecirctre ameneacute agrave geacuterer plusieurs types de fiches par exemple fiche Document fiche Client ficheFournisseur hellipLe type dune fiche sera donneacute par lattribut TypeDocXml de la balise XML ltDocumentXMLgt

Par exemple Introduction de la fiche descriptive drsquoun client par ltDocumentXML TypeDocXML=FicheClientgt

Par exemple Introduction de la fiche descriptive drsquoun devis par ltDocumentXML TypeDocXML=DevisPiscinegt

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquoLe traitement drsquoune fiche XML sera controcircleacute par un laquo modegravele de fiche XML raquo et sera effectueacute par deslaquo parsers raquo XML

Un laquo modegravele de fiche XML raquo et les laquo parsers raquo associeacutes sont speacutecifiques agrave un type de fiche XML

A chaque type de fiche XML sera associeacute un couple de laquo parsers raquo XML chargeacutes de geacuteneacuterer le codeHTML neacutecessaire pour visualiser le contenu drsquoune fiche ou pour preacutesenter le formulaire de saisie modification de cette ficheChaque laquo parser raquo est composeacute drsquoun ensemble de proceacutedures prenant en charge les traitements agraveeffectuer sur chaque balise XML de la fiche Lors de son ouverture Sur son contenu Lors de sa fermeture

Chaque parser agrave utiliser est identifieacute par l lsquoattribut Handler de la balise XML ltDocumentXMLgt Dans la fiche cet attribut identifie le laquo parser raquo agrave utiliser pour traiter la valeur des diffeacuterents

champs de la fiche Dans le laquo modegravele de fiche XML raquo cet attribut identifie le laquo parser raquo agrave utiliser pour afficher la fiche

et le formulaire associeacute Regravegle de nommage Si le laquo parser raquo de la fiche XML est laquo xxx raquo celui de son modegravele doit ecirctre

laquo Modelexxx raquo

Le couple de parsers geacuteneacuteriques par deacutefaut est laquo Handler=FicheXML raquo pour la fiche laquo Handler=ModeleFicheXML raquo pour son modegravele

NB Les 2 laquo parsers raquo sont donc toujours utiliseacutes quel que soit le contexte

A chaque type de fiche XML sera associeacute un laquo modegravele de fiche XML raquo qui sera interpreacuteteacute par leparser Ce modegravele deacutecrit le code HTML agrave geacuteneacuterer ainsi que les eacuteventuels traitements agrave effectuer pourchaque balise XML de la fiche Dans le cas de lrsquoaffichage du contenu de la fiche le modegravele deacutecrit la mise en page de la fiche Dans le cas de la preacutesentation du formulaire de saisie ou de modification drsquoune fiche le mecircme modegravele

deacutecrit la mise en page du formulaire et les valeurs par deacutefaut des diffeacuterents champs Regravegle de nommage Si le type de la fiche XML est laquo yyy raquo celui de son modegravele doit ecirctre

laquo Modeleyyy raquo

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 2: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 244

Table des matiegraveres

1 Objectifs 3

2 Utilisation des laquo Fiches XML raquo 421 Inteacutegration agrave SPIP le filtre laquo processXML raquo 4

22 Utilisation du filtre laquo processXML raquo par lrsquoapplication 4

23 Les paramegravetres drsquoenvironnement du filtre laquo processXML raquo 5

24 Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip 7

3 Principes de traitement des laquo Fiches XML raquo 931 Le type dune FICHE XML 9

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquo 9

33 Le contenu dun modegravele de FICHE XML 10

34 Le traitement drsquoune FICHE XML les laquo parsers raquo 11

4 La distribution laquo SPIP ndash XML raquo 1341 Les composants 13

Les fichiers drsquoinstallation 13Les squelettes de lrsquoexemple laquo Devis raquo 13Le filtre laquo processXML raquo et le traitement des fiches XML 15

42 La mise en œuvre de lrsquoinstallation Installer les fichiers 19

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base 20

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo 21

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs25

Balise ltDocumentXMLgt 25

Balise ltCadregt 28

Balise ltTitregt 30

Balise ltnom_champgt 31

Annexe 2 - Exemple de FICHE XML complegravete Description drsquoun projet desolidariteacute 37

SPIP-XMLdoc 344

1 Objectifs

Le package deacutecrit ici srsquoadresse agrave ceux qui souhaitent utiliser SPIP ( httpwwwspipnet ) pour manipuler desobjets (fiches techniques par exemple) dont les attributs (ou champs) ne correspondent pas agrave ceux geacutereacutes parce systegraveme de publication titre sous-titre chapeau texte hellip

Lrsquoobjectif est alors de pouvoir conserver SPIP comme structure daccueil en associant un article ou unerubrique agrave chacun de ces objets

Ceci est possible en utilisant un codage XML de lrsquoobjet (ou plutocirct de ses attributs) cette repreacutesentation delrsquoobjet eacutetant stockeacutee dans le corps drsquoun article ou drsquoune rubrique SPIP qui lui sera associeacute

Le couple SPIP+XML est particuliegraverement performant puisquil allie dune part une gestion globale de lobjeten tant quarticle ou rubrique SPIP hieacuterarchie mots-cleacutes indexation forum hellip et dautre part une gestionapplicative de lobjet en tant quensemble de champs formulaire de saisie affichage et traitementspersonnaliseacutes

NB Pour faciliter la compreacutehension de la suite de ce document au lieu de parler dobjets ayant des attributs ouchamps nous parlerons de Fiches descriptives ou plus simplement de Fiches XML

SPIP-XMLdoc 444

2 Utilisation des laquo Fiches XML raquo

21 Inteacutegration agrave SPIP le filtre laquo processXML raquoLes fiches descriptives seront codeacutees en XML dans le champ laquo Texte raquo dun article ou dune rubrique SPIP enexploitant toutes les fonctionnaliteacutes offertes par SPIP pour classer acceacuteder et rechercher ces articles ourubriques

De plus agrave chaque type de fiche sera associeacute un modegravele qui deacutecrira agrave la fois laffichage et la saisie de chacunde ses champs

Dans la pratique toutes les balises SPIP pouvant avoir un contenu XML pourront ecirctre traiteacutees par le filtreprocessXML

Le traitement de mise en page normalement effectueacute par SPIP sera inhibeacute en faisant suivre le nom de la balisepar une asteacuterisque (cf documentation Spip laquoMise en page Manuel de reacutefeacuterenceraquo Court-circuiter letraitement par Spip)

NB Dans le cas ougrave la balise ne contiendrait pas de code XML la mise en page standard de SPIP (filtre propre) seraeffectueacutee par le filtre processXML

Par exemple Affichage du texte dun article ou drsquoune rubrique

[(TEXTE|processXML)]

Afin drsquoidentifier le traitement agrave effectuer sur le contenu XML drsquoune fiche ce dernier commencera par la baliseXML laquo ltDocumentXMLgt raquo deacutecrite plus loin

ltDocumentXML TypeDocXML=Type_de_fiche Handler=parsergt

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne de la fiche descriptive dun devis ltDocumentXML TypeDocXML=DevisPiscine Handler=FicheXMLgt

NB Si les donneacutees traiteacutees par le filtre processXML ne commencent pas par la balise ltDocumentXMLgt les donneacuteessont retourneacutees agrave SPIP inchangeacutees apregraves application du filtre Spip laquopropreraquo

22 Utilisation du filtre laquo processXML raquo par lrsquoapplication

Le code PHP laquoapplicatifraquo pourra appeler la fonction processXML() pour afficher un document XML contenudans une variable PHP (comme lors de lutilisation du filtre par Spip)

Par exemple $dataHTML = processXML($dataXML) echo $dataHTML

SPIP-XMLdoc 544

23 Les paramegravetres drsquoenvironnement du filtre laquo processXML raquo

Plusieurs variables globales sont utiliseacutees pour controcircler le traitement drsquoune laquo Fiche XML raquo

$xml_TypeFicheXML Le type de la fiche (au choix de lrsquoapplication) $xml_ObjetSpip Lrsquoobjet Spip qui contient ou contiendra la fiche ( =rsquoarticlersquo ou =rsquorubriquersquo ) $xml_ParamsObjetSpip Paramegravetres pour la creacuteation drsquoun nouvel objet Spip contenant la fiche saisie

Syntaxe des formulaires html - Si objet rsquorubriquersquo alors = rsquoid_secteur=xxxampid_rubrique=0rsquo- Si objet rsquoarticlersquo alors = rsquoid_secteur=xxxampid_rubrique=xxxampid_article=0rsquo

Ces variables sont normalement renseigneacutees par le filtre laquo processXML raquo

Exeacutecution du filtre par Spip

Lorsque Spip exeacutecute le filtre laquo processXML raquo ce dernier appelle la proceacutedure laquo setParamsXml() raquo quirenseigne ces variables globales en fonction du contexte en cours

Les variables $xml_ObjetSpip et $xml_ParamsObjetSpip seront renseigneacutees en exploitant le contexte Spip nom du squelette en cours drsquoexeacutecution id de lrsquoarticle ou de la rubrique en cours de traitement et paramegravetresassocieacuteshellip

Le laquo Type de Fiche XML raquo sera le mot-cleacute de lrsquoarticle ou de la rubrique en cours de traitement appartenantau groupe de mots-cleacutes laquo TypeFicheXML raquo

Le laquo Modegravele de Fiche XML raquo agrave traiter sera donneacute par lrsquoarticle Spip ayant le mot-cleacute laquo ModeleFicheXML raquo etayant son SURTITRE=rsquoModeleltType de Fiche XMLgtrsquo (par ex lsquoModeleFicheClientrsquo ou lsquoModeleDevisPiscinersquo)

Rappel Lrsquoarticle ou la rubrique contenant une laquo fiche XML raquo commence toujours par la balise XML ltDocumentXML TypeDocXML=Type_de_fiche XML hellipgt

Renseignement du lien vers la creacuteation drsquoune nouvelle fiche

La proceacutedure laquo setParamsXml($typeFicheXML $id_article_modele) raquo doit ecirctre appeleacutee pour obtenir lrsquourl dulien vers le formulaire de creacuteation drsquoune nouvelle ficheLes paramegravetres (optionnels) sont

$typeFicheXML Type de laquo Fiche XML raquoSi vide sera renseigneacute avec la valeur du mot-cleacute laquo TypeFicheXML raquo associeacute agravelrsquoobjet Spip en cours donneacute par $xml_ObjetSpip

$id_article_modele Id de lrsquoarticle Spip contenant le modegravele agrave traiterSi vide sera lrsquoid de lrsquoarticle de mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo etde laquo SURTITRE=rsquoModelelttype de fiche XMLgtrsquo raquo

$xml_ObjetSpip Objet Spip qui contiendra la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves le squelette encours (cf $PHP_SELF)

SPIP-XMLdoc 644

$xml_ParamsObjetSpip Paramegravetres agrave utiliser pour visualiser la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves la laquo FicheXML raquo en cours si elle existe

Lrsquoappel agrave laquo setParamsXml() raquo renseignera en retour la variable globale $lienNewFicheXML avec lrsquourl rechercheacute

Exemple de code affichant les liens de creacuteation de laquo Devis raquo dans le squelette laquo rubriquehtml raquohellip hellip hellip hellip hellip hellip hellip hellip helliplt mdashRechercher la rubrique agrave traiter ltBOUCLE_principale(RUBRIQUES)id_rubriquedoublonsgtlt php Meacutemoriser le ndeg de la rubrique agrave traiter container et son secteur NB On suppose qursquoelle contient des devishellip et on veut afficher les liens vers de nouveaux devis $id_rub = ID_RUBRIQUE $id_sect = ID_SECTEUR $fiches = array() $i = 0------------------------------------------------------ Rechercher les modegraveles de devis (type de fiche laquo DevisXXXX raquo) Conventions =gt Les modegraveles sont des articles de mot-cleacute laquo ModeleFicheXML raquo =gt Le type de modegravele est dans le surtitre et il est de la forme laquo ModeleDevisXXX raquo =gt Le texte agrave afficher pour le lien est dans le titre =gt Le code XML agrave traiter est dans le texte------------------------------------------------------gt ltBOUCLE_ModelesFiches(ARTICLES)titre_mot=ModeleFicheXMLgtlt php $modele = SURTITRE if ( strpos(_$modele _ModeleDevis)==1 ) $modele commence par lsquoModeleDevisrsquo $typeFiche = substr($modele strpos($modele Modele ) $typeFiche=rsquoDevisXXXXrsquo $fiches[$i][texte] = [(TITRE|texte_script)] Conserver le laquo titre raquo du modegravele

Renseigner les variables drsquoenvironnement pour laquo setparamsXML() raquo $xml_ObjetSpip = article Les devis seront dans des articles $xml_ParamsObjetSpip = id_rubrique=$id_rubampid_secteur=$id_sectampid_article=0 setParamsXML($typeFiche ID_ARTICLE) Renseigner le lien $lienNewFicheXML

Renseigner les liens pour la creacuteation de fiches $fiches[$i][lien] = $lienNewFicheXML $i++ Fin if ( strpos(_$modele _ModeleDevis)==1 )gt ltBOUCLE_ModelesFichesgthellip hellip hellip hellip hellip hellip hellip hellip hellipltphp foreach ($fiches as $fiche) Balayer les liens meacutemoriseacutes Afficher les liensgt ltA HREF=lt=$fiche[lien]gt gt lt=$fiche[texte]gt ltAgt ltBR gtltphp gthellip hellip hellip hellip hellip hellip hellip hellip hellip

SPIP-XMLdoc 744

24 Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip

Des modegraveles drsquoimportation respectant la syntaxe (xml aussi) des exportations de la base reacutealiseacutees par Spipsont utiliseacutes pour importer les objets Spip (rubrique article mots-cleacutes hellip) associeacutes agrave une laquo Fiche XML raquo

Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip ainsi que la sauvegarde de ses modifications sont reacutealiseacutees par laproceacutedure laquo importObjectIntoSpip($objetAppli $attributs $pathToImportDir) raquo appeleacutee avec lesparamegravetres suivants

$objetAppli Objet applicatif agrave creacuteer ou mettre agrave jour =gt Les modegraveles dimportation seront trouveacutes - via la variable globale $import_$objetAppli - ou dans le fichier $pathToImportDirimport_$objetAppli_StdxmlNB La variable globale $import_$objetAppli donnera la liste des fichiersimport_xxxxml du reacutepertoire $pathToImportDir qui devront ecirctre traiteacutes pourreacutealiser lrsquoimportation de lrsquoobjet applicatif

$attributs Tableau associatif contenant la valeur de chaque laquo champ raquo de la laquo Fiche XML raquo $attributs[ltchampgt] = ltvaleur champgtLes champs lsquoltchampgtrsquo preacutesents dans les modegraveles drsquoimportation seront remplaceacutespar $attributs[ltchampgt] avant de donner ce modegravele agrave traiter agrave la proceacutedure Spipdrsquoimportation (cf import_objet() )

$pathToImportDir Chemin relatif au site vers le reacutepertoire contenant les modegraveles drsquoimportationCe paramegravetre est optionnel si vide il sera renseigneacute avec la valeur du paramegravetrePathToImportModels de la table MySQL laquo spip_params_appli raquo Si ce dernierparamegravetre est vide alors $pathToImportDir = rsquoToolsModeles_importrsquo

NB La proceacutedure utilise aussi la variable globale laquo $userId raquo donnant lrsquoid de lrsquoauteur Spip identifieacute

Avant importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera la valeur des attributs suivants srsquoilsne sont pas deacutejagrave renseigneacutes

bull $attributs[Heure] = lthh mm ssgt 135723bull $attributs[DateJour] = ltaaaa-mm-jjgt 2002-01-15bull $attributs[Date] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateRedac] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateFr] = ltjjmmaaaagt 15012002bull $attributs[lsquoid_auteurrsquo] = $userId id de lrsquoauteur Spip identifieacutebull $attributs[idAuteurModif] = $userId si creacuteation drsquoune nouvelle fiche

et pour chaque mots-cleacutes laquo ltmotgt raquo existant bull $attributs[id_mot_ltmotgt ] = ltid du mot-cleacutegtbull $attributs[id_groupe_ltmotgt ] = ltid du groupe contenant le mot-cleacutegtbull $attributs[nom_groupe_ltmotgt ] = lttype du mot-cleacutegt

Pour effectuer lrsquoimportation la proceacutedure laquo importObjectIntoSpip() raquo remplacera dans chaque modegraveledrsquoimportation agrave traiter les chaicircnes lsquoxxxrsquo par la valeur de lrsquoattribut $attributs[lsquoxxxrsquo] puis appelera laproceacutedure Spip import_objet() avec ce modegravele en paramegravetre

SPIP-XMLdoc 844

Apregraves importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera pour le 1er objet importeacute dans Spipla valeur des attributs suivants

bull $attributs[first_objetSpip] = rubrique ou article ou bull $attributs[first_id_rubrique] ou $attributs[first_id_article] ou bull $attributs[id_rubrique] ou $attributs[id_article] ou

et retournera une valeur lsquovraiersquo si lrsquoimportation srsquoest bien passeacute En cas drsquoerreur la variable globale$errNouvelleFiche contiendra le message drsquoerreur

SPIP-XMLdoc 944

3 Principes de traitement des laquo Fiches XML raquo

31 Le type dune FICHE XMLOn peut ecirctre ameneacute agrave geacuterer plusieurs types de fiches par exemple fiche Document fiche Client ficheFournisseur hellipLe type dune fiche sera donneacute par lattribut TypeDocXml de la balise XML ltDocumentXMLgt

Par exemple Introduction de la fiche descriptive drsquoun client par ltDocumentXML TypeDocXML=FicheClientgt

Par exemple Introduction de la fiche descriptive drsquoun devis par ltDocumentXML TypeDocXML=DevisPiscinegt

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquoLe traitement drsquoune fiche XML sera controcircleacute par un laquo modegravele de fiche XML raquo et sera effectueacute par deslaquo parsers raquo XML

Un laquo modegravele de fiche XML raquo et les laquo parsers raquo associeacutes sont speacutecifiques agrave un type de fiche XML

A chaque type de fiche XML sera associeacute un couple de laquo parsers raquo XML chargeacutes de geacuteneacuterer le codeHTML neacutecessaire pour visualiser le contenu drsquoune fiche ou pour preacutesenter le formulaire de saisie modification de cette ficheChaque laquo parser raquo est composeacute drsquoun ensemble de proceacutedures prenant en charge les traitements agraveeffectuer sur chaque balise XML de la fiche Lors de son ouverture Sur son contenu Lors de sa fermeture

Chaque parser agrave utiliser est identifieacute par l lsquoattribut Handler de la balise XML ltDocumentXMLgt Dans la fiche cet attribut identifie le laquo parser raquo agrave utiliser pour traiter la valeur des diffeacuterents

champs de la fiche Dans le laquo modegravele de fiche XML raquo cet attribut identifie le laquo parser raquo agrave utiliser pour afficher la fiche

et le formulaire associeacute Regravegle de nommage Si le laquo parser raquo de la fiche XML est laquo xxx raquo celui de son modegravele doit ecirctre

laquo Modelexxx raquo

Le couple de parsers geacuteneacuteriques par deacutefaut est laquo Handler=FicheXML raquo pour la fiche laquo Handler=ModeleFicheXML raquo pour son modegravele

NB Les 2 laquo parsers raquo sont donc toujours utiliseacutes quel que soit le contexte

A chaque type de fiche XML sera associeacute un laquo modegravele de fiche XML raquo qui sera interpreacuteteacute par leparser Ce modegravele deacutecrit le code HTML agrave geacuteneacuterer ainsi que les eacuteventuels traitements agrave effectuer pourchaque balise XML de la fiche Dans le cas de lrsquoaffichage du contenu de la fiche le modegravele deacutecrit la mise en page de la fiche Dans le cas de la preacutesentation du formulaire de saisie ou de modification drsquoune fiche le mecircme modegravele

deacutecrit la mise en page du formulaire et les valeurs par deacutefaut des diffeacuterents champs Regravegle de nommage Si le type de la fiche XML est laquo yyy raquo celui de son modegravele doit ecirctre

laquo Modeleyyy raquo

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 3: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 344

1 Objectifs

Le package deacutecrit ici srsquoadresse agrave ceux qui souhaitent utiliser SPIP ( httpwwwspipnet ) pour manipuler desobjets (fiches techniques par exemple) dont les attributs (ou champs) ne correspondent pas agrave ceux geacutereacutes parce systegraveme de publication titre sous-titre chapeau texte hellip

Lrsquoobjectif est alors de pouvoir conserver SPIP comme structure daccueil en associant un article ou unerubrique agrave chacun de ces objets

Ceci est possible en utilisant un codage XML de lrsquoobjet (ou plutocirct de ses attributs) cette repreacutesentation delrsquoobjet eacutetant stockeacutee dans le corps drsquoun article ou drsquoune rubrique SPIP qui lui sera associeacute

Le couple SPIP+XML est particuliegraverement performant puisquil allie dune part une gestion globale de lobjeten tant quarticle ou rubrique SPIP hieacuterarchie mots-cleacutes indexation forum hellip et dautre part une gestionapplicative de lobjet en tant quensemble de champs formulaire de saisie affichage et traitementspersonnaliseacutes

NB Pour faciliter la compreacutehension de la suite de ce document au lieu de parler dobjets ayant des attributs ouchamps nous parlerons de Fiches descriptives ou plus simplement de Fiches XML

SPIP-XMLdoc 444

2 Utilisation des laquo Fiches XML raquo

21 Inteacutegration agrave SPIP le filtre laquo processXML raquoLes fiches descriptives seront codeacutees en XML dans le champ laquo Texte raquo dun article ou dune rubrique SPIP enexploitant toutes les fonctionnaliteacutes offertes par SPIP pour classer acceacuteder et rechercher ces articles ourubriques

De plus agrave chaque type de fiche sera associeacute un modegravele qui deacutecrira agrave la fois laffichage et la saisie de chacunde ses champs

Dans la pratique toutes les balises SPIP pouvant avoir un contenu XML pourront ecirctre traiteacutees par le filtreprocessXML

Le traitement de mise en page normalement effectueacute par SPIP sera inhibeacute en faisant suivre le nom de la balisepar une asteacuterisque (cf documentation Spip laquoMise en page Manuel de reacutefeacuterenceraquo Court-circuiter letraitement par Spip)

NB Dans le cas ougrave la balise ne contiendrait pas de code XML la mise en page standard de SPIP (filtre propre) seraeffectueacutee par le filtre processXML

Par exemple Affichage du texte dun article ou drsquoune rubrique

[(TEXTE|processXML)]

Afin drsquoidentifier le traitement agrave effectuer sur le contenu XML drsquoune fiche ce dernier commencera par la baliseXML laquo ltDocumentXMLgt raquo deacutecrite plus loin

ltDocumentXML TypeDocXML=Type_de_fiche Handler=parsergt

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne de la fiche descriptive dun devis ltDocumentXML TypeDocXML=DevisPiscine Handler=FicheXMLgt

NB Si les donneacutees traiteacutees par le filtre processXML ne commencent pas par la balise ltDocumentXMLgt les donneacuteessont retourneacutees agrave SPIP inchangeacutees apregraves application du filtre Spip laquopropreraquo

22 Utilisation du filtre laquo processXML raquo par lrsquoapplication

Le code PHP laquoapplicatifraquo pourra appeler la fonction processXML() pour afficher un document XML contenudans une variable PHP (comme lors de lutilisation du filtre par Spip)

Par exemple $dataHTML = processXML($dataXML) echo $dataHTML

SPIP-XMLdoc 544

23 Les paramegravetres drsquoenvironnement du filtre laquo processXML raquo

Plusieurs variables globales sont utiliseacutees pour controcircler le traitement drsquoune laquo Fiche XML raquo

$xml_TypeFicheXML Le type de la fiche (au choix de lrsquoapplication) $xml_ObjetSpip Lrsquoobjet Spip qui contient ou contiendra la fiche ( =rsquoarticlersquo ou =rsquorubriquersquo ) $xml_ParamsObjetSpip Paramegravetres pour la creacuteation drsquoun nouvel objet Spip contenant la fiche saisie

Syntaxe des formulaires html - Si objet rsquorubriquersquo alors = rsquoid_secteur=xxxampid_rubrique=0rsquo- Si objet rsquoarticlersquo alors = rsquoid_secteur=xxxampid_rubrique=xxxampid_article=0rsquo

Ces variables sont normalement renseigneacutees par le filtre laquo processXML raquo

Exeacutecution du filtre par Spip

Lorsque Spip exeacutecute le filtre laquo processXML raquo ce dernier appelle la proceacutedure laquo setParamsXml() raquo quirenseigne ces variables globales en fonction du contexte en cours

Les variables $xml_ObjetSpip et $xml_ParamsObjetSpip seront renseigneacutees en exploitant le contexte Spip nom du squelette en cours drsquoexeacutecution id de lrsquoarticle ou de la rubrique en cours de traitement et paramegravetresassocieacuteshellip

Le laquo Type de Fiche XML raquo sera le mot-cleacute de lrsquoarticle ou de la rubrique en cours de traitement appartenantau groupe de mots-cleacutes laquo TypeFicheXML raquo

Le laquo Modegravele de Fiche XML raquo agrave traiter sera donneacute par lrsquoarticle Spip ayant le mot-cleacute laquo ModeleFicheXML raquo etayant son SURTITRE=rsquoModeleltType de Fiche XMLgtrsquo (par ex lsquoModeleFicheClientrsquo ou lsquoModeleDevisPiscinersquo)

Rappel Lrsquoarticle ou la rubrique contenant une laquo fiche XML raquo commence toujours par la balise XML ltDocumentXML TypeDocXML=Type_de_fiche XML hellipgt

Renseignement du lien vers la creacuteation drsquoune nouvelle fiche

La proceacutedure laquo setParamsXml($typeFicheXML $id_article_modele) raquo doit ecirctre appeleacutee pour obtenir lrsquourl dulien vers le formulaire de creacuteation drsquoune nouvelle ficheLes paramegravetres (optionnels) sont

$typeFicheXML Type de laquo Fiche XML raquoSi vide sera renseigneacute avec la valeur du mot-cleacute laquo TypeFicheXML raquo associeacute agravelrsquoobjet Spip en cours donneacute par $xml_ObjetSpip

$id_article_modele Id de lrsquoarticle Spip contenant le modegravele agrave traiterSi vide sera lrsquoid de lrsquoarticle de mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo etde laquo SURTITRE=rsquoModelelttype de fiche XMLgtrsquo raquo

$xml_ObjetSpip Objet Spip qui contiendra la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves le squelette encours (cf $PHP_SELF)

SPIP-XMLdoc 644

$xml_ParamsObjetSpip Paramegravetres agrave utiliser pour visualiser la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves la laquo FicheXML raquo en cours si elle existe

Lrsquoappel agrave laquo setParamsXml() raquo renseignera en retour la variable globale $lienNewFicheXML avec lrsquourl rechercheacute

Exemple de code affichant les liens de creacuteation de laquo Devis raquo dans le squelette laquo rubriquehtml raquohellip hellip hellip hellip hellip hellip hellip hellip helliplt mdashRechercher la rubrique agrave traiter ltBOUCLE_principale(RUBRIQUES)id_rubriquedoublonsgtlt php Meacutemoriser le ndeg de la rubrique agrave traiter container et son secteur NB On suppose qursquoelle contient des devishellip et on veut afficher les liens vers de nouveaux devis $id_rub = ID_RUBRIQUE $id_sect = ID_SECTEUR $fiches = array() $i = 0------------------------------------------------------ Rechercher les modegraveles de devis (type de fiche laquo DevisXXXX raquo) Conventions =gt Les modegraveles sont des articles de mot-cleacute laquo ModeleFicheXML raquo =gt Le type de modegravele est dans le surtitre et il est de la forme laquo ModeleDevisXXX raquo =gt Le texte agrave afficher pour le lien est dans le titre =gt Le code XML agrave traiter est dans le texte------------------------------------------------------gt ltBOUCLE_ModelesFiches(ARTICLES)titre_mot=ModeleFicheXMLgtlt php $modele = SURTITRE if ( strpos(_$modele _ModeleDevis)==1 ) $modele commence par lsquoModeleDevisrsquo $typeFiche = substr($modele strpos($modele Modele ) $typeFiche=rsquoDevisXXXXrsquo $fiches[$i][texte] = [(TITRE|texte_script)] Conserver le laquo titre raquo du modegravele

Renseigner les variables drsquoenvironnement pour laquo setparamsXML() raquo $xml_ObjetSpip = article Les devis seront dans des articles $xml_ParamsObjetSpip = id_rubrique=$id_rubampid_secteur=$id_sectampid_article=0 setParamsXML($typeFiche ID_ARTICLE) Renseigner le lien $lienNewFicheXML

Renseigner les liens pour la creacuteation de fiches $fiches[$i][lien] = $lienNewFicheXML $i++ Fin if ( strpos(_$modele _ModeleDevis)==1 )gt ltBOUCLE_ModelesFichesgthellip hellip hellip hellip hellip hellip hellip hellip hellipltphp foreach ($fiches as $fiche) Balayer les liens meacutemoriseacutes Afficher les liensgt ltA HREF=lt=$fiche[lien]gt gt lt=$fiche[texte]gt ltAgt ltBR gtltphp gthellip hellip hellip hellip hellip hellip hellip hellip hellip

SPIP-XMLdoc 744

24 Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip

Des modegraveles drsquoimportation respectant la syntaxe (xml aussi) des exportations de la base reacutealiseacutees par Spipsont utiliseacutes pour importer les objets Spip (rubrique article mots-cleacutes hellip) associeacutes agrave une laquo Fiche XML raquo

Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip ainsi que la sauvegarde de ses modifications sont reacutealiseacutees par laproceacutedure laquo importObjectIntoSpip($objetAppli $attributs $pathToImportDir) raquo appeleacutee avec lesparamegravetres suivants

$objetAppli Objet applicatif agrave creacuteer ou mettre agrave jour =gt Les modegraveles dimportation seront trouveacutes - via la variable globale $import_$objetAppli - ou dans le fichier $pathToImportDirimport_$objetAppli_StdxmlNB La variable globale $import_$objetAppli donnera la liste des fichiersimport_xxxxml du reacutepertoire $pathToImportDir qui devront ecirctre traiteacutes pourreacutealiser lrsquoimportation de lrsquoobjet applicatif

$attributs Tableau associatif contenant la valeur de chaque laquo champ raquo de la laquo Fiche XML raquo $attributs[ltchampgt] = ltvaleur champgtLes champs lsquoltchampgtrsquo preacutesents dans les modegraveles drsquoimportation seront remplaceacutespar $attributs[ltchampgt] avant de donner ce modegravele agrave traiter agrave la proceacutedure Spipdrsquoimportation (cf import_objet() )

$pathToImportDir Chemin relatif au site vers le reacutepertoire contenant les modegraveles drsquoimportationCe paramegravetre est optionnel si vide il sera renseigneacute avec la valeur du paramegravetrePathToImportModels de la table MySQL laquo spip_params_appli raquo Si ce dernierparamegravetre est vide alors $pathToImportDir = rsquoToolsModeles_importrsquo

NB La proceacutedure utilise aussi la variable globale laquo $userId raquo donnant lrsquoid de lrsquoauteur Spip identifieacute

Avant importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera la valeur des attributs suivants srsquoilsne sont pas deacutejagrave renseigneacutes

bull $attributs[Heure] = lthh mm ssgt 135723bull $attributs[DateJour] = ltaaaa-mm-jjgt 2002-01-15bull $attributs[Date] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateRedac] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateFr] = ltjjmmaaaagt 15012002bull $attributs[lsquoid_auteurrsquo] = $userId id de lrsquoauteur Spip identifieacutebull $attributs[idAuteurModif] = $userId si creacuteation drsquoune nouvelle fiche

et pour chaque mots-cleacutes laquo ltmotgt raquo existant bull $attributs[id_mot_ltmotgt ] = ltid du mot-cleacutegtbull $attributs[id_groupe_ltmotgt ] = ltid du groupe contenant le mot-cleacutegtbull $attributs[nom_groupe_ltmotgt ] = lttype du mot-cleacutegt

Pour effectuer lrsquoimportation la proceacutedure laquo importObjectIntoSpip() raquo remplacera dans chaque modegraveledrsquoimportation agrave traiter les chaicircnes lsquoxxxrsquo par la valeur de lrsquoattribut $attributs[lsquoxxxrsquo] puis appelera laproceacutedure Spip import_objet() avec ce modegravele en paramegravetre

SPIP-XMLdoc 844

Apregraves importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera pour le 1er objet importeacute dans Spipla valeur des attributs suivants

bull $attributs[first_objetSpip] = rubrique ou article ou bull $attributs[first_id_rubrique] ou $attributs[first_id_article] ou bull $attributs[id_rubrique] ou $attributs[id_article] ou

et retournera une valeur lsquovraiersquo si lrsquoimportation srsquoest bien passeacute En cas drsquoerreur la variable globale$errNouvelleFiche contiendra le message drsquoerreur

SPIP-XMLdoc 944

3 Principes de traitement des laquo Fiches XML raquo

31 Le type dune FICHE XMLOn peut ecirctre ameneacute agrave geacuterer plusieurs types de fiches par exemple fiche Document fiche Client ficheFournisseur hellipLe type dune fiche sera donneacute par lattribut TypeDocXml de la balise XML ltDocumentXMLgt

Par exemple Introduction de la fiche descriptive drsquoun client par ltDocumentXML TypeDocXML=FicheClientgt

Par exemple Introduction de la fiche descriptive drsquoun devis par ltDocumentXML TypeDocXML=DevisPiscinegt

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquoLe traitement drsquoune fiche XML sera controcircleacute par un laquo modegravele de fiche XML raquo et sera effectueacute par deslaquo parsers raquo XML

Un laquo modegravele de fiche XML raquo et les laquo parsers raquo associeacutes sont speacutecifiques agrave un type de fiche XML

A chaque type de fiche XML sera associeacute un couple de laquo parsers raquo XML chargeacutes de geacuteneacuterer le codeHTML neacutecessaire pour visualiser le contenu drsquoune fiche ou pour preacutesenter le formulaire de saisie modification de cette ficheChaque laquo parser raquo est composeacute drsquoun ensemble de proceacutedures prenant en charge les traitements agraveeffectuer sur chaque balise XML de la fiche Lors de son ouverture Sur son contenu Lors de sa fermeture

Chaque parser agrave utiliser est identifieacute par l lsquoattribut Handler de la balise XML ltDocumentXMLgt Dans la fiche cet attribut identifie le laquo parser raquo agrave utiliser pour traiter la valeur des diffeacuterents

champs de la fiche Dans le laquo modegravele de fiche XML raquo cet attribut identifie le laquo parser raquo agrave utiliser pour afficher la fiche

et le formulaire associeacute Regravegle de nommage Si le laquo parser raquo de la fiche XML est laquo xxx raquo celui de son modegravele doit ecirctre

laquo Modelexxx raquo

Le couple de parsers geacuteneacuteriques par deacutefaut est laquo Handler=FicheXML raquo pour la fiche laquo Handler=ModeleFicheXML raquo pour son modegravele

NB Les 2 laquo parsers raquo sont donc toujours utiliseacutes quel que soit le contexte

A chaque type de fiche XML sera associeacute un laquo modegravele de fiche XML raquo qui sera interpreacuteteacute par leparser Ce modegravele deacutecrit le code HTML agrave geacuteneacuterer ainsi que les eacuteventuels traitements agrave effectuer pourchaque balise XML de la fiche Dans le cas de lrsquoaffichage du contenu de la fiche le modegravele deacutecrit la mise en page de la fiche Dans le cas de la preacutesentation du formulaire de saisie ou de modification drsquoune fiche le mecircme modegravele

deacutecrit la mise en page du formulaire et les valeurs par deacutefaut des diffeacuterents champs Regravegle de nommage Si le type de la fiche XML est laquo yyy raquo celui de son modegravele doit ecirctre

laquo Modeleyyy raquo

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 4: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 444

2 Utilisation des laquo Fiches XML raquo

21 Inteacutegration agrave SPIP le filtre laquo processXML raquoLes fiches descriptives seront codeacutees en XML dans le champ laquo Texte raquo dun article ou dune rubrique SPIP enexploitant toutes les fonctionnaliteacutes offertes par SPIP pour classer acceacuteder et rechercher ces articles ourubriques

De plus agrave chaque type de fiche sera associeacute un modegravele qui deacutecrira agrave la fois laffichage et la saisie de chacunde ses champs

Dans la pratique toutes les balises SPIP pouvant avoir un contenu XML pourront ecirctre traiteacutees par le filtreprocessXML

Le traitement de mise en page normalement effectueacute par SPIP sera inhibeacute en faisant suivre le nom de la balisepar une asteacuterisque (cf documentation Spip laquoMise en page Manuel de reacutefeacuterenceraquo Court-circuiter letraitement par Spip)

NB Dans le cas ougrave la balise ne contiendrait pas de code XML la mise en page standard de SPIP (filtre propre) seraeffectueacutee par le filtre processXML

Par exemple Affichage du texte dun article ou drsquoune rubrique

[(TEXTE|processXML)]

Afin drsquoidentifier le traitement agrave effectuer sur le contenu XML drsquoune fiche ce dernier commencera par la baliseXML laquo ltDocumentXMLgt raquo deacutecrite plus loin

ltDocumentXML TypeDocXML=Type_de_fiche Handler=parsergt

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne de la fiche descriptive dun devis ltDocumentXML TypeDocXML=DevisPiscine Handler=FicheXMLgt

NB Si les donneacutees traiteacutees par le filtre processXML ne commencent pas par la balise ltDocumentXMLgt les donneacuteessont retourneacutees agrave SPIP inchangeacutees apregraves application du filtre Spip laquopropreraquo

22 Utilisation du filtre laquo processXML raquo par lrsquoapplication

Le code PHP laquoapplicatifraquo pourra appeler la fonction processXML() pour afficher un document XML contenudans une variable PHP (comme lors de lutilisation du filtre par Spip)

Par exemple $dataHTML = processXML($dataXML) echo $dataHTML

SPIP-XMLdoc 544

23 Les paramegravetres drsquoenvironnement du filtre laquo processXML raquo

Plusieurs variables globales sont utiliseacutees pour controcircler le traitement drsquoune laquo Fiche XML raquo

$xml_TypeFicheXML Le type de la fiche (au choix de lrsquoapplication) $xml_ObjetSpip Lrsquoobjet Spip qui contient ou contiendra la fiche ( =rsquoarticlersquo ou =rsquorubriquersquo ) $xml_ParamsObjetSpip Paramegravetres pour la creacuteation drsquoun nouvel objet Spip contenant la fiche saisie

Syntaxe des formulaires html - Si objet rsquorubriquersquo alors = rsquoid_secteur=xxxampid_rubrique=0rsquo- Si objet rsquoarticlersquo alors = rsquoid_secteur=xxxampid_rubrique=xxxampid_article=0rsquo

Ces variables sont normalement renseigneacutees par le filtre laquo processXML raquo

Exeacutecution du filtre par Spip

Lorsque Spip exeacutecute le filtre laquo processXML raquo ce dernier appelle la proceacutedure laquo setParamsXml() raquo quirenseigne ces variables globales en fonction du contexte en cours

Les variables $xml_ObjetSpip et $xml_ParamsObjetSpip seront renseigneacutees en exploitant le contexte Spip nom du squelette en cours drsquoexeacutecution id de lrsquoarticle ou de la rubrique en cours de traitement et paramegravetresassocieacuteshellip

Le laquo Type de Fiche XML raquo sera le mot-cleacute de lrsquoarticle ou de la rubrique en cours de traitement appartenantau groupe de mots-cleacutes laquo TypeFicheXML raquo

Le laquo Modegravele de Fiche XML raquo agrave traiter sera donneacute par lrsquoarticle Spip ayant le mot-cleacute laquo ModeleFicheXML raquo etayant son SURTITRE=rsquoModeleltType de Fiche XMLgtrsquo (par ex lsquoModeleFicheClientrsquo ou lsquoModeleDevisPiscinersquo)

Rappel Lrsquoarticle ou la rubrique contenant une laquo fiche XML raquo commence toujours par la balise XML ltDocumentXML TypeDocXML=Type_de_fiche XML hellipgt

Renseignement du lien vers la creacuteation drsquoune nouvelle fiche

La proceacutedure laquo setParamsXml($typeFicheXML $id_article_modele) raquo doit ecirctre appeleacutee pour obtenir lrsquourl dulien vers le formulaire de creacuteation drsquoune nouvelle ficheLes paramegravetres (optionnels) sont

$typeFicheXML Type de laquo Fiche XML raquoSi vide sera renseigneacute avec la valeur du mot-cleacute laquo TypeFicheXML raquo associeacute agravelrsquoobjet Spip en cours donneacute par $xml_ObjetSpip

$id_article_modele Id de lrsquoarticle Spip contenant le modegravele agrave traiterSi vide sera lrsquoid de lrsquoarticle de mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo etde laquo SURTITRE=rsquoModelelttype de fiche XMLgtrsquo raquo

$xml_ObjetSpip Objet Spip qui contiendra la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves le squelette encours (cf $PHP_SELF)

SPIP-XMLdoc 644

$xml_ParamsObjetSpip Paramegravetres agrave utiliser pour visualiser la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves la laquo FicheXML raquo en cours si elle existe

Lrsquoappel agrave laquo setParamsXml() raquo renseignera en retour la variable globale $lienNewFicheXML avec lrsquourl rechercheacute

Exemple de code affichant les liens de creacuteation de laquo Devis raquo dans le squelette laquo rubriquehtml raquohellip hellip hellip hellip hellip hellip hellip hellip helliplt mdashRechercher la rubrique agrave traiter ltBOUCLE_principale(RUBRIQUES)id_rubriquedoublonsgtlt php Meacutemoriser le ndeg de la rubrique agrave traiter container et son secteur NB On suppose qursquoelle contient des devishellip et on veut afficher les liens vers de nouveaux devis $id_rub = ID_RUBRIQUE $id_sect = ID_SECTEUR $fiches = array() $i = 0------------------------------------------------------ Rechercher les modegraveles de devis (type de fiche laquo DevisXXXX raquo) Conventions =gt Les modegraveles sont des articles de mot-cleacute laquo ModeleFicheXML raquo =gt Le type de modegravele est dans le surtitre et il est de la forme laquo ModeleDevisXXX raquo =gt Le texte agrave afficher pour le lien est dans le titre =gt Le code XML agrave traiter est dans le texte------------------------------------------------------gt ltBOUCLE_ModelesFiches(ARTICLES)titre_mot=ModeleFicheXMLgtlt php $modele = SURTITRE if ( strpos(_$modele _ModeleDevis)==1 ) $modele commence par lsquoModeleDevisrsquo $typeFiche = substr($modele strpos($modele Modele ) $typeFiche=rsquoDevisXXXXrsquo $fiches[$i][texte] = [(TITRE|texte_script)] Conserver le laquo titre raquo du modegravele

Renseigner les variables drsquoenvironnement pour laquo setparamsXML() raquo $xml_ObjetSpip = article Les devis seront dans des articles $xml_ParamsObjetSpip = id_rubrique=$id_rubampid_secteur=$id_sectampid_article=0 setParamsXML($typeFiche ID_ARTICLE) Renseigner le lien $lienNewFicheXML

Renseigner les liens pour la creacuteation de fiches $fiches[$i][lien] = $lienNewFicheXML $i++ Fin if ( strpos(_$modele _ModeleDevis)==1 )gt ltBOUCLE_ModelesFichesgthellip hellip hellip hellip hellip hellip hellip hellip hellipltphp foreach ($fiches as $fiche) Balayer les liens meacutemoriseacutes Afficher les liensgt ltA HREF=lt=$fiche[lien]gt gt lt=$fiche[texte]gt ltAgt ltBR gtltphp gthellip hellip hellip hellip hellip hellip hellip hellip hellip

SPIP-XMLdoc 744

24 Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip

Des modegraveles drsquoimportation respectant la syntaxe (xml aussi) des exportations de la base reacutealiseacutees par Spipsont utiliseacutes pour importer les objets Spip (rubrique article mots-cleacutes hellip) associeacutes agrave une laquo Fiche XML raquo

Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip ainsi que la sauvegarde de ses modifications sont reacutealiseacutees par laproceacutedure laquo importObjectIntoSpip($objetAppli $attributs $pathToImportDir) raquo appeleacutee avec lesparamegravetres suivants

$objetAppli Objet applicatif agrave creacuteer ou mettre agrave jour =gt Les modegraveles dimportation seront trouveacutes - via la variable globale $import_$objetAppli - ou dans le fichier $pathToImportDirimport_$objetAppli_StdxmlNB La variable globale $import_$objetAppli donnera la liste des fichiersimport_xxxxml du reacutepertoire $pathToImportDir qui devront ecirctre traiteacutes pourreacutealiser lrsquoimportation de lrsquoobjet applicatif

$attributs Tableau associatif contenant la valeur de chaque laquo champ raquo de la laquo Fiche XML raquo $attributs[ltchampgt] = ltvaleur champgtLes champs lsquoltchampgtrsquo preacutesents dans les modegraveles drsquoimportation seront remplaceacutespar $attributs[ltchampgt] avant de donner ce modegravele agrave traiter agrave la proceacutedure Spipdrsquoimportation (cf import_objet() )

$pathToImportDir Chemin relatif au site vers le reacutepertoire contenant les modegraveles drsquoimportationCe paramegravetre est optionnel si vide il sera renseigneacute avec la valeur du paramegravetrePathToImportModels de la table MySQL laquo spip_params_appli raquo Si ce dernierparamegravetre est vide alors $pathToImportDir = rsquoToolsModeles_importrsquo

NB La proceacutedure utilise aussi la variable globale laquo $userId raquo donnant lrsquoid de lrsquoauteur Spip identifieacute

Avant importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera la valeur des attributs suivants srsquoilsne sont pas deacutejagrave renseigneacutes

bull $attributs[Heure] = lthh mm ssgt 135723bull $attributs[DateJour] = ltaaaa-mm-jjgt 2002-01-15bull $attributs[Date] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateRedac] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateFr] = ltjjmmaaaagt 15012002bull $attributs[lsquoid_auteurrsquo] = $userId id de lrsquoauteur Spip identifieacutebull $attributs[idAuteurModif] = $userId si creacuteation drsquoune nouvelle fiche

et pour chaque mots-cleacutes laquo ltmotgt raquo existant bull $attributs[id_mot_ltmotgt ] = ltid du mot-cleacutegtbull $attributs[id_groupe_ltmotgt ] = ltid du groupe contenant le mot-cleacutegtbull $attributs[nom_groupe_ltmotgt ] = lttype du mot-cleacutegt

Pour effectuer lrsquoimportation la proceacutedure laquo importObjectIntoSpip() raquo remplacera dans chaque modegraveledrsquoimportation agrave traiter les chaicircnes lsquoxxxrsquo par la valeur de lrsquoattribut $attributs[lsquoxxxrsquo] puis appelera laproceacutedure Spip import_objet() avec ce modegravele en paramegravetre

SPIP-XMLdoc 844

Apregraves importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera pour le 1er objet importeacute dans Spipla valeur des attributs suivants

bull $attributs[first_objetSpip] = rubrique ou article ou bull $attributs[first_id_rubrique] ou $attributs[first_id_article] ou bull $attributs[id_rubrique] ou $attributs[id_article] ou

et retournera une valeur lsquovraiersquo si lrsquoimportation srsquoest bien passeacute En cas drsquoerreur la variable globale$errNouvelleFiche contiendra le message drsquoerreur

SPIP-XMLdoc 944

3 Principes de traitement des laquo Fiches XML raquo

31 Le type dune FICHE XMLOn peut ecirctre ameneacute agrave geacuterer plusieurs types de fiches par exemple fiche Document fiche Client ficheFournisseur hellipLe type dune fiche sera donneacute par lattribut TypeDocXml de la balise XML ltDocumentXMLgt

Par exemple Introduction de la fiche descriptive drsquoun client par ltDocumentXML TypeDocXML=FicheClientgt

Par exemple Introduction de la fiche descriptive drsquoun devis par ltDocumentXML TypeDocXML=DevisPiscinegt

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquoLe traitement drsquoune fiche XML sera controcircleacute par un laquo modegravele de fiche XML raquo et sera effectueacute par deslaquo parsers raquo XML

Un laquo modegravele de fiche XML raquo et les laquo parsers raquo associeacutes sont speacutecifiques agrave un type de fiche XML

A chaque type de fiche XML sera associeacute un couple de laquo parsers raquo XML chargeacutes de geacuteneacuterer le codeHTML neacutecessaire pour visualiser le contenu drsquoune fiche ou pour preacutesenter le formulaire de saisie modification de cette ficheChaque laquo parser raquo est composeacute drsquoun ensemble de proceacutedures prenant en charge les traitements agraveeffectuer sur chaque balise XML de la fiche Lors de son ouverture Sur son contenu Lors de sa fermeture

Chaque parser agrave utiliser est identifieacute par l lsquoattribut Handler de la balise XML ltDocumentXMLgt Dans la fiche cet attribut identifie le laquo parser raquo agrave utiliser pour traiter la valeur des diffeacuterents

champs de la fiche Dans le laquo modegravele de fiche XML raquo cet attribut identifie le laquo parser raquo agrave utiliser pour afficher la fiche

et le formulaire associeacute Regravegle de nommage Si le laquo parser raquo de la fiche XML est laquo xxx raquo celui de son modegravele doit ecirctre

laquo Modelexxx raquo

Le couple de parsers geacuteneacuteriques par deacutefaut est laquo Handler=FicheXML raquo pour la fiche laquo Handler=ModeleFicheXML raquo pour son modegravele

NB Les 2 laquo parsers raquo sont donc toujours utiliseacutes quel que soit le contexte

A chaque type de fiche XML sera associeacute un laquo modegravele de fiche XML raquo qui sera interpreacuteteacute par leparser Ce modegravele deacutecrit le code HTML agrave geacuteneacuterer ainsi que les eacuteventuels traitements agrave effectuer pourchaque balise XML de la fiche Dans le cas de lrsquoaffichage du contenu de la fiche le modegravele deacutecrit la mise en page de la fiche Dans le cas de la preacutesentation du formulaire de saisie ou de modification drsquoune fiche le mecircme modegravele

deacutecrit la mise en page du formulaire et les valeurs par deacutefaut des diffeacuterents champs Regravegle de nommage Si le type de la fiche XML est laquo yyy raquo celui de son modegravele doit ecirctre

laquo Modeleyyy raquo

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 5: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 544

23 Les paramegravetres drsquoenvironnement du filtre laquo processXML raquo

Plusieurs variables globales sont utiliseacutees pour controcircler le traitement drsquoune laquo Fiche XML raquo

$xml_TypeFicheXML Le type de la fiche (au choix de lrsquoapplication) $xml_ObjetSpip Lrsquoobjet Spip qui contient ou contiendra la fiche ( =rsquoarticlersquo ou =rsquorubriquersquo ) $xml_ParamsObjetSpip Paramegravetres pour la creacuteation drsquoun nouvel objet Spip contenant la fiche saisie

Syntaxe des formulaires html - Si objet rsquorubriquersquo alors = rsquoid_secteur=xxxampid_rubrique=0rsquo- Si objet rsquoarticlersquo alors = rsquoid_secteur=xxxampid_rubrique=xxxampid_article=0rsquo

Ces variables sont normalement renseigneacutees par le filtre laquo processXML raquo

Exeacutecution du filtre par Spip

Lorsque Spip exeacutecute le filtre laquo processXML raquo ce dernier appelle la proceacutedure laquo setParamsXml() raquo quirenseigne ces variables globales en fonction du contexte en cours

Les variables $xml_ObjetSpip et $xml_ParamsObjetSpip seront renseigneacutees en exploitant le contexte Spip nom du squelette en cours drsquoexeacutecution id de lrsquoarticle ou de la rubrique en cours de traitement et paramegravetresassocieacuteshellip

Le laquo Type de Fiche XML raquo sera le mot-cleacute de lrsquoarticle ou de la rubrique en cours de traitement appartenantau groupe de mots-cleacutes laquo TypeFicheXML raquo

Le laquo Modegravele de Fiche XML raquo agrave traiter sera donneacute par lrsquoarticle Spip ayant le mot-cleacute laquo ModeleFicheXML raquo etayant son SURTITRE=rsquoModeleltType de Fiche XMLgtrsquo (par ex lsquoModeleFicheClientrsquo ou lsquoModeleDevisPiscinersquo)

Rappel Lrsquoarticle ou la rubrique contenant une laquo fiche XML raquo commence toujours par la balise XML ltDocumentXML TypeDocXML=Type_de_fiche XML hellipgt

Renseignement du lien vers la creacuteation drsquoune nouvelle fiche

La proceacutedure laquo setParamsXml($typeFicheXML $id_article_modele) raquo doit ecirctre appeleacutee pour obtenir lrsquourl dulien vers le formulaire de creacuteation drsquoune nouvelle ficheLes paramegravetres (optionnels) sont

$typeFicheXML Type de laquo Fiche XML raquoSi vide sera renseigneacute avec la valeur du mot-cleacute laquo TypeFicheXML raquo associeacute agravelrsquoobjet Spip en cours donneacute par $xml_ObjetSpip

$id_article_modele Id de lrsquoarticle Spip contenant le modegravele agrave traiterSi vide sera lrsquoid de lrsquoarticle de mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo etde laquo SURTITRE=rsquoModelelttype de fiche XMLgtrsquo raquo

$xml_ObjetSpip Objet Spip qui contiendra la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves le squelette encours (cf $PHP_SELF)

SPIP-XMLdoc 644

$xml_ParamsObjetSpip Paramegravetres agrave utiliser pour visualiser la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves la laquo FicheXML raquo en cours si elle existe

Lrsquoappel agrave laquo setParamsXml() raquo renseignera en retour la variable globale $lienNewFicheXML avec lrsquourl rechercheacute

Exemple de code affichant les liens de creacuteation de laquo Devis raquo dans le squelette laquo rubriquehtml raquohellip hellip hellip hellip hellip hellip hellip hellip helliplt mdashRechercher la rubrique agrave traiter ltBOUCLE_principale(RUBRIQUES)id_rubriquedoublonsgtlt php Meacutemoriser le ndeg de la rubrique agrave traiter container et son secteur NB On suppose qursquoelle contient des devishellip et on veut afficher les liens vers de nouveaux devis $id_rub = ID_RUBRIQUE $id_sect = ID_SECTEUR $fiches = array() $i = 0------------------------------------------------------ Rechercher les modegraveles de devis (type de fiche laquo DevisXXXX raquo) Conventions =gt Les modegraveles sont des articles de mot-cleacute laquo ModeleFicheXML raquo =gt Le type de modegravele est dans le surtitre et il est de la forme laquo ModeleDevisXXX raquo =gt Le texte agrave afficher pour le lien est dans le titre =gt Le code XML agrave traiter est dans le texte------------------------------------------------------gt ltBOUCLE_ModelesFiches(ARTICLES)titre_mot=ModeleFicheXMLgtlt php $modele = SURTITRE if ( strpos(_$modele _ModeleDevis)==1 ) $modele commence par lsquoModeleDevisrsquo $typeFiche = substr($modele strpos($modele Modele ) $typeFiche=rsquoDevisXXXXrsquo $fiches[$i][texte] = [(TITRE|texte_script)] Conserver le laquo titre raquo du modegravele

Renseigner les variables drsquoenvironnement pour laquo setparamsXML() raquo $xml_ObjetSpip = article Les devis seront dans des articles $xml_ParamsObjetSpip = id_rubrique=$id_rubampid_secteur=$id_sectampid_article=0 setParamsXML($typeFiche ID_ARTICLE) Renseigner le lien $lienNewFicheXML

Renseigner les liens pour la creacuteation de fiches $fiches[$i][lien] = $lienNewFicheXML $i++ Fin if ( strpos(_$modele _ModeleDevis)==1 )gt ltBOUCLE_ModelesFichesgthellip hellip hellip hellip hellip hellip hellip hellip hellipltphp foreach ($fiches as $fiche) Balayer les liens meacutemoriseacutes Afficher les liensgt ltA HREF=lt=$fiche[lien]gt gt lt=$fiche[texte]gt ltAgt ltBR gtltphp gthellip hellip hellip hellip hellip hellip hellip hellip hellip

SPIP-XMLdoc 744

24 Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip

Des modegraveles drsquoimportation respectant la syntaxe (xml aussi) des exportations de la base reacutealiseacutees par Spipsont utiliseacutes pour importer les objets Spip (rubrique article mots-cleacutes hellip) associeacutes agrave une laquo Fiche XML raquo

Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip ainsi que la sauvegarde de ses modifications sont reacutealiseacutees par laproceacutedure laquo importObjectIntoSpip($objetAppli $attributs $pathToImportDir) raquo appeleacutee avec lesparamegravetres suivants

$objetAppli Objet applicatif agrave creacuteer ou mettre agrave jour =gt Les modegraveles dimportation seront trouveacutes - via la variable globale $import_$objetAppli - ou dans le fichier $pathToImportDirimport_$objetAppli_StdxmlNB La variable globale $import_$objetAppli donnera la liste des fichiersimport_xxxxml du reacutepertoire $pathToImportDir qui devront ecirctre traiteacutes pourreacutealiser lrsquoimportation de lrsquoobjet applicatif

$attributs Tableau associatif contenant la valeur de chaque laquo champ raquo de la laquo Fiche XML raquo $attributs[ltchampgt] = ltvaleur champgtLes champs lsquoltchampgtrsquo preacutesents dans les modegraveles drsquoimportation seront remplaceacutespar $attributs[ltchampgt] avant de donner ce modegravele agrave traiter agrave la proceacutedure Spipdrsquoimportation (cf import_objet() )

$pathToImportDir Chemin relatif au site vers le reacutepertoire contenant les modegraveles drsquoimportationCe paramegravetre est optionnel si vide il sera renseigneacute avec la valeur du paramegravetrePathToImportModels de la table MySQL laquo spip_params_appli raquo Si ce dernierparamegravetre est vide alors $pathToImportDir = rsquoToolsModeles_importrsquo

NB La proceacutedure utilise aussi la variable globale laquo $userId raquo donnant lrsquoid de lrsquoauteur Spip identifieacute

Avant importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera la valeur des attributs suivants srsquoilsne sont pas deacutejagrave renseigneacutes

bull $attributs[Heure] = lthh mm ssgt 135723bull $attributs[DateJour] = ltaaaa-mm-jjgt 2002-01-15bull $attributs[Date] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateRedac] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateFr] = ltjjmmaaaagt 15012002bull $attributs[lsquoid_auteurrsquo] = $userId id de lrsquoauteur Spip identifieacutebull $attributs[idAuteurModif] = $userId si creacuteation drsquoune nouvelle fiche

et pour chaque mots-cleacutes laquo ltmotgt raquo existant bull $attributs[id_mot_ltmotgt ] = ltid du mot-cleacutegtbull $attributs[id_groupe_ltmotgt ] = ltid du groupe contenant le mot-cleacutegtbull $attributs[nom_groupe_ltmotgt ] = lttype du mot-cleacutegt

Pour effectuer lrsquoimportation la proceacutedure laquo importObjectIntoSpip() raquo remplacera dans chaque modegraveledrsquoimportation agrave traiter les chaicircnes lsquoxxxrsquo par la valeur de lrsquoattribut $attributs[lsquoxxxrsquo] puis appelera laproceacutedure Spip import_objet() avec ce modegravele en paramegravetre

SPIP-XMLdoc 844

Apregraves importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera pour le 1er objet importeacute dans Spipla valeur des attributs suivants

bull $attributs[first_objetSpip] = rubrique ou article ou bull $attributs[first_id_rubrique] ou $attributs[first_id_article] ou bull $attributs[id_rubrique] ou $attributs[id_article] ou

et retournera une valeur lsquovraiersquo si lrsquoimportation srsquoest bien passeacute En cas drsquoerreur la variable globale$errNouvelleFiche contiendra le message drsquoerreur

SPIP-XMLdoc 944

3 Principes de traitement des laquo Fiches XML raquo

31 Le type dune FICHE XMLOn peut ecirctre ameneacute agrave geacuterer plusieurs types de fiches par exemple fiche Document fiche Client ficheFournisseur hellipLe type dune fiche sera donneacute par lattribut TypeDocXml de la balise XML ltDocumentXMLgt

Par exemple Introduction de la fiche descriptive drsquoun client par ltDocumentXML TypeDocXML=FicheClientgt

Par exemple Introduction de la fiche descriptive drsquoun devis par ltDocumentXML TypeDocXML=DevisPiscinegt

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquoLe traitement drsquoune fiche XML sera controcircleacute par un laquo modegravele de fiche XML raquo et sera effectueacute par deslaquo parsers raquo XML

Un laquo modegravele de fiche XML raquo et les laquo parsers raquo associeacutes sont speacutecifiques agrave un type de fiche XML

A chaque type de fiche XML sera associeacute un couple de laquo parsers raquo XML chargeacutes de geacuteneacuterer le codeHTML neacutecessaire pour visualiser le contenu drsquoune fiche ou pour preacutesenter le formulaire de saisie modification de cette ficheChaque laquo parser raquo est composeacute drsquoun ensemble de proceacutedures prenant en charge les traitements agraveeffectuer sur chaque balise XML de la fiche Lors de son ouverture Sur son contenu Lors de sa fermeture

Chaque parser agrave utiliser est identifieacute par l lsquoattribut Handler de la balise XML ltDocumentXMLgt Dans la fiche cet attribut identifie le laquo parser raquo agrave utiliser pour traiter la valeur des diffeacuterents

champs de la fiche Dans le laquo modegravele de fiche XML raquo cet attribut identifie le laquo parser raquo agrave utiliser pour afficher la fiche

et le formulaire associeacute Regravegle de nommage Si le laquo parser raquo de la fiche XML est laquo xxx raquo celui de son modegravele doit ecirctre

laquo Modelexxx raquo

Le couple de parsers geacuteneacuteriques par deacutefaut est laquo Handler=FicheXML raquo pour la fiche laquo Handler=ModeleFicheXML raquo pour son modegravele

NB Les 2 laquo parsers raquo sont donc toujours utiliseacutes quel que soit le contexte

A chaque type de fiche XML sera associeacute un laquo modegravele de fiche XML raquo qui sera interpreacuteteacute par leparser Ce modegravele deacutecrit le code HTML agrave geacuteneacuterer ainsi que les eacuteventuels traitements agrave effectuer pourchaque balise XML de la fiche Dans le cas de lrsquoaffichage du contenu de la fiche le modegravele deacutecrit la mise en page de la fiche Dans le cas de la preacutesentation du formulaire de saisie ou de modification drsquoune fiche le mecircme modegravele

deacutecrit la mise en page du formulaire et les valeurs par deacutefaut des diffeacuterents champs Regravegle de nommage Si le type de la fiche XML est laquo yyy raquo celui de son modegravele doit ecirctre

laquo Modeleyyy raquo

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 6: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 644

$xml_ParamsObjetSpip Paramegravetres agrave utiliser pour visualiser la future ficheSi cette variable globale est vide elle sera renseigneacutee drsquoapregraves la laquo FicheXML raquo en cours si elle existe

Lrsquoappel agrave laquo setParamsXml() raquo renseignera en retour la variable globale $lienNewFicheXML avec lrsquourl rechercheacute

Exemple de code affichant les liens de creacuteation de laquo Devis raquo dans le squelette laquo rubriquehtml raquohellip hellip hellip hellip hellip hellip hellip hellip helliplt mdashRechercher la rubrique agrave traiter ltBOUCLE_principale(RUBRIQUES)id_rubriquedoublonsgtlt php Meacutemoriser le ndeg de la rubrique agrave traiter container et son secteur NB On suppose qursquoelle contient des devishellip et on veut afficher les liens vers de nouveaux devis $id_rub = ID_RUBRIQUE $id_sect = ID_SECTEUR $fiches = array() $i = 0------------------------------------------------------ Rechercher les modegraveles de devis (type de fiche laquo DevisXXXX raquo) Conventions =gt Les modegraveles sont des articles de mot-cleacute laquo ModeleFicheXML raquo =gt Le type de modegravele est dans le surtitre et il est de la forme laquo ModeleDevisXXX raquo =gt Le texte agrave afficher pour le lien est dans le titre =gt Le code XML agrave traiter est dans le texte------------------------------------------------------gt ltBOUCLE_ModelesFiches(ARTICLES)titre_mot=ModeleFicheXMLgtlt php $modele = SURTITRE if ( strpos(_$modele _ModeleDevis)==1 ) $modele commence par lsquoModeleDevisrsquo $typeFiche = substr($modele strpos($modele Modele ) $typeFiche=rsquoDevisXXXXrsquo $fiches[$i][texte] = [(TITRE|texte_script)] Conserver le laquo titre raquo du modegravele

Renseigner les variables drsquoenvironnement pour laquo setparamsXML() raquo $xml_ObjetSpip = article Les devis seront dans des articles $xml_ParamsObjetSpip = id_rubrique=$id_rubampid_secteur=$id_sectampid_article=0 setParamsXML($typeFiche ID_ARTICLE) Renseigner le lien $lienNewFicheXML

Renseigner les liens pour la creacuteation de fiches $fiches[$i][lien] = $lienNewFicheXML $i++ Fin if ( strpos(_$modele _ModeleDevis)==1 )gt ltBOUCLE_ModelesFichesgthellip hellip hellip hellip hellip hellip hellip hellip hellipltphp foreach ($fiches as $fiche) Balayer les liens meacutemoriseacutes Afficher les liensgt ltA HREF=lt=$fiche[lien]gt gt lt=$fiche[texte]gt ltAgt ltBR gtltphp gthellip hellip hellip hellip hellip hellip hellip hellip hellip

SPIP-XMLdoc 744

24 Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip

Des modegraveles drsquoimportation respectant la syntaxe (xml aussi) des exportations de la base reacutealiseacutees par Spipsont utiliseacutes pour importer les objets Spip (rubrique article mots-cleacutes hellip) associeacutes agrave une laquo Fiche XML raquo

Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip ainsi que la sauvegarde de ses modifications sont reacutealiseacutees par laproceacutedure laquo importObjectIntoSpip($objetAppli $attributs $pathToImportDir) raquo appeleacutee avec lesparamegravetres suivants

$objetAppli Objet applicatif agrave creacuteer ou mettre agrave jour =gt Les modegraveles dimportation seront trouveacutes - via la variable globale $import_$objetAppli - ou dans le fichier $pathToImportDirimport_$objetAppli_StdxmlNB La variable globale $import_$objetAppli donnera la liste des fichiersimport_xxxxml du reacutepertoire $pathToImportDir qui devront ecirctre traiteacutes pourreacutealiser lrsquoimportation de lrsquoobjet applicatif

$attributs Tableau associatif contenant la valeur de chaque laquo champ raquo de la laquo Fiche XML raquo $attributs[ltchampgt] = ltvaleur champgtLes champs lsquoltchampgtrsquo preacutesents dans les modegraveles drsquoimportation seront remplaceacutespar $attributs[ltchampgt] avant de donner ce modegravele agrave traiter agrave la proceacutedure Spipdrsquoimportation (cf import_objet() )

$pathToImportDir Chemin relatif au site vers le reacutepertoire contenant les modegraveles drsquoimportationCe paramegravetre est optionnel si vide il sera renseigneacute avec la valeur du paramegravetrePathToImportModels de la table MySQL laquo spip_params_appli raquo Si ce dernierparamegravetre est vide alors $pathToImportDir = rsquoToolsModeles_importrsquo

NB La proceacutedure utilise aussi la variable globale laquo $userId raquo donnant lrsquoid de lrsquoauteur Spip identifieacute

Avant importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera la valeur des attributs suivants srsquoilsne sont pas deacutejagrave renseigneacutes

bull $attributs[Heure] = lthh mm ssgt 135723bull $attributs[DateJour] = ltaaaa-mm-jjgt 2002-01-15bull $attributs[Date] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateRedac] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateFr] = ltjjmmaaaagt 15012002bull $attributs[lsquoid_auteurrsquo] = $userId id de lrsquoauteur Spip identifieacutebull $attributs[idAuteurModif] = $userId si creacuteation drsquoune nouvelle fiche

et pour chaque mots-cleacutes laquo ltmotgt raquo existant bull $attributs[id_mot_ltmotgt ] = ltid du mot-cleacutegtbull $attributs[id_groupe_ltmotgt ] = ltid du groupe contenant le mot-cleacutegtbull $attributs[nom_groupe_ltmotgt ] = lttype du mot-cleacutegt

Pour effectuer lrsquoimportation la proceacutedure laquo importObjectIntoSpip() raquo remplacera dans chaque modegraveledrsquoimportation agrave traiter les chaicircnes lsquoxxxrsquo par la valeur de lrsquoattribut $attributs[lsquoxxxrsquo] puis appelera laproceacutedure Spip import_objet() avec ce modegravele en paramegravetre

SPIP-XMLdoc 844

Apregraves importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera pour le 1er objet importeacute dans Spipla valeur des attributs suivants

bull $attributs[first_objetSpip] = rubrique ou article ou bull $attributs[first_id_rubrique] ou $attributs[first_id_article] ou bull $attributs[id_rubrique] ou $attributs[id_article] ou

et retournera une valeur lsquovraiersquo si lrsquoimportation srsquoest bien passeacute En cas drsquoerreur la variable globale$errNouvelleFiche contiendra le message drsquoerreur

SPIP-XMLdoc 944

3 Principes de traitement des laquo Fiches XML raquo

31 Le type dune FICHE XMLOn peut ecirctre ameneacute agrave geacuterer plusieurs types de fiches par exemple fiche Document fiche Client ficheFournisseur hellipLe type dune fiche sera donneacute par lattribut TypeDocXml de la balise XML ltDocumentXMLgt

Par exemple Introduction de la fiche descriptive drsquoun client par ltDocumentXML TypeDocXML=FicheClientgt

Par exemple Introduction de la fiche descriptive drsquoun devis par ltDocumentXML TypeDocXML=DevisPiscinegt

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquoLe traitement drsquoune fiche XML sera controcircleacute par un laquo modegravele de fiche XML raquo et sera effectueacute par deslaquo parsers raquo XML

Un laquo modegravele de fiche XML raquo et les laquo parsers raquo associeacutes sont speacutecifiques agrave un type de fiche XML

A chaque type de fiche XML sera associeacute un couple de laquo parsers raquo XML chargeacutes de geacuteneacuterer le codeHTML neacutecessaire pour visualiser le contenu drsquoune fiche ou pour preacutesenter le formulaire de saisie modification de cette ficheChaque laquo parser raquo est composeacute drsquoun ensemble de proceacutedures prenant en charge les traitements agraveeffectuer sur chaque balise XML de la fiche Lors de son ouverture Sur son contenu Lors de sa fermeture

Chaque parser agrave utiliser est identifieacute par l lsquoattribut Handler de la balise XML ltDocumentXMLgt Dans la fiche cet attribut identifie le laquo parser raquo agrave utiliser pour traiter la valeur des diffeacuterents

champs de la fiche Dans le laquo modegravele de fiche XML raquo cet attribut identifie le laquo parser raquo agrave utiliser pour afficher la fiche

et le formulaire associeacute Regravegle de nommage Si le laquo parser raquo de la fiche XML est laquo xxx raquo celui de son modegravele doit ecirctre

laquo Modelexxx raquo

Le couple de parsers geacuteneacuteriques par deacutefaut est laquo Handler=FicheXML raquo pour la fiche laquo Handler=ModeleFicheXML raquo pour son modegravele

NB Les 2 laquo parsers raquo sont donc toujours utiliseacutes quel que soit le contexte

A chaque type de fiche XML sera associeacute un laquo modegravele de fiche XML raquo qui sera interpreacuteteacute par leparser Ce modegravele deacutecrit le code HTML agrave geacuteneacuterer ainsi que les eacuteventuels traitements agrave effectuer pourchaque balise XML de la fiche Dans le cas de lrsquoaffichage du contenu de la fiche le modegravele deacutecrit la mise en page de la fiche Dans le cas de la preacutesentation du formulaire de saisie ou de modification drsquoune fiche le mecircme modegravele

deacutecrit la mise en page du formulaire et les valeurs par deacutefaut des diffeacuterents champs Regravegle de nommage Si le type de la fiche XML est laquo yyy raquo celui de son modegravele doit ecirctre

laquo Modeleyyy raquo

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 7: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 744

24 Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip

Des modegraveles drsquoimportation respectant la syntaxe (xml aussi) des exportations de la base reacutealiseacutees par Spipsont utiliseacutes pour importer les objets Spip (rubrique article mots-cleacutes hellip) associeacutes agrave une laquo Fiche XML raquo

Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip ainsi que la sauvegarde de ses modifications sont reacutealiseacutees par laproceacutedure laquo importObjectIntoSpip($objetAppli $attributs $pathToImportDir) raquo appeleacutee avec lesparamegravetres suivants

$objetAppli Objet applicatif agrave creacuteer ou mettre agrave jour =gt Les modegraveles dimportation seront trouveacutes - via la variable globale $import_$objetAppli - ou dans le fichier $pathToImportDirimport_$objetAppli_StdxmlNB La variable globale $import_$objetAppli donnera la liste des fichiersimport_xxxxml du reacutepertoire $pathToImportDir qui devront ecirctre traiteacutes pourreacutealiser lrsquoimportation de lrsquoobjet applicatif

$attributs Tableau associatif contenant la valeur de chaque laquo champ raquo de la laquo Fiche XML raquo $attributs[ltchampgt] = ltvaleur champgtLes champs lsquoltchampgtrsquo preacutesents dans les modegraveles drsquoimportation seront remplaceacutespar $attributs[ltchampgt] avant de donner ce modegravele agrave traiter agrave la proceacutedure Spipdrsquoimportation (cf import_objet() )

$pathToImportDir Chemin relatif au site vers le reacutepertoire contenant les modegraveles drsquoimportationCe paramegravetre est optionnel si vide il sera renseigneacute avec la valeur du paramegravetrePathToImportModels de la table MySQL laquo spip_params_appli raquo Si ce dernierparamegravetre est vide alors $pathToImportDir = rsquoToolsModeles_importrsquo

NB La proceacutedure utilise aussi la variable globale laquo $userId raquo donnant lrsquoid de lrsquoauteur Spip identifieacute

Avant importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera la valeur des attributs suivants srsquoilsne sont pas deacutejagrave renseigneacutes

bull $attributs[Heure] = lthh mm ssgt 135723bull $attributs[DateJour] = ltaaaa-mm-jjgt 2002-01-15bull $attributs[Date] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateRedac] = ltaaaa-mm-jjgt lthh mm ssgtbull $attributs[DateFr] = ltjjmmaaaagt 15012002bull $attributs[lsquoid_auteurrsquo] = $userId id de lrsquoauteur Spip identifieacutebull $attributs[idAuteurModif] = $userId si creacuteation drsquoune nouvelle fiche

et pour chaque mots-cleacutes laquo ltmotgt raquo existant bull $attributs[id_mot_ltmotgt ] = ltid du mot-cleacutegtbull $attributs[id_groupe_ltmotgt ] = ltid du groupe contenant le mot-cleacutegtbull $attributs[nom_groupe_ltmotgt ] = lttype du mot-cleacutegt

Pour effectuer lrsquoimportation la proceacutedure laquo importObjectIntoSpip() raquo remplacera dans chaque modegraveledrsquoimportation agrave traiter les chaicircnes lsquoxxxrsquo par la valeur de lrsquoattribut $attributs[lsquoxxxrsquo] puis appelera laproceacutedure Spip import_objet() avec ce modegravele en paramegravetre

SPIP-XMLdoc 844

Apregraves importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera pour le 1er objet importeacute dans Spipla valeur des attributs suivants

bull $attributs[first_objetSpip] = rubrique ou article ou bull $attributs[first_id_rubrique] ou $attributs[first_id_article] ou bull $attributs[id_rubrique] ou $attributs[id_article] ou

et retournera une valeur lsquovraiersquo si lrsquoimportation srsquoest bien passeacute En cas drsquoerreur la variable globale$errNouvelleFiche contiendra le message drsquoerreur

SPIP-XMLdoc 944

3 Principes de traitement des laquo Fiches XML raquo

31 Le type dune FICHE XMLOn peut ecirctre ameneacute agrave geacuterer plusieurs types de fiches par exemple fiche Document fiche Client ficheFournisseur hellipLe type dune fiche sera donneacute par lattribut TypeDocXml de la balise XML ltDocumentXMLgt

Par exemple Introduction de la fiche descriptive drsquoun client par ltDocumentXML TypeDocXML=FicheClientgt

Par exemple Introduction de la fiche descriptive drsquoun devis par ltDocumentXML TypeDocXML=DevisPiscinegt

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquoLe traitement drsquoune fiche XML sera controcircleacute par un laquo modegravele de fiche XML raquo et sera effectueacute par deslaquo parsers raquo XML

Un laquo modegravele de fiche XML raquo et les laquo parsers raquo associeacutes sont speacutecifiques agrave un type de fiche XML

A chaque type de fiche XML sera associeacute un couple de laquo parsers raquo XML chargeacutes de geacuteneacuterer le codeHTML neacutecessaire pour visualiser le contenu drsquoune fiche ou pour preacutesenter le formulaire de saisie modification de cette ficheChaque laquo parser raquo est composeacute drsquoun ensemble de proceacutedures prenant en charge les traitements agraveeffectuer sur chaque balise XML de la fiche Lors de son ouverture Sur son contenu Lors de sa fermeture

Chaque parser agrave utiliser est identifieacute par l lsquoattribut Handler de la balise XML ltDocumentXMLgt Dans la fiche cet attribut identifie le laquo parser raquo agrave utiliser pour traiter la valeur des diffeacuterents

champs de la fiche Dans le laquo modegravele de fiche XML raquo cet attribut identifie le laquo parser raquo agrave utiliser pour afficher la fiche

et le formulaire associeacute Regravegle de nommage Si le laquo parser raquo de la fiche XML est laquo xxx raquo celui de son modegravele doit ecirctre

laquo Modelexxx raquo

Le couple de parsers geacuteneacuteriques par deacutefaut est laquo Handler=FicheXML raquo pour la fiche laquo Handler=ModeleFicheXML raquo pour son modegravele

NB Les 2 laquo parsers raquo sont donc toujours utiliseacutes quel que soit le contexte

A chaque type de fiche XML sera associeacute un laquo modegravele de fiche XML raquo qui sera interpreacuteteacute par leparser Ce modegravele deacutecrit le code HTML agrave geacuteneacuterer ainsi que les eacuteventuels traitements agrave effectuer pourchaque balise XML de la fiche Dans le cas de lrsquoaffichage du contenu de la fiche le modegravele deacutecrit la mise en page de la fiche Dans le cas de la preacutesentation du formulaire de saisie ou de modification drsquoune fiche le mecircme modegravele

deacutecrit la mise en page du formulaire et les valeurs par deacutefaut des diffeacuterents champs Regravegle de nommage Si le type de la fiche XML est laquo yyy raquo celui de son modegravele doit ecirctre

laquo Modeleyyy raquo

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 8: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 844

Apregraves importation la proceacutedure laquo importObjectIntoSpip() raquo renseignera pour le 1er objet importeacute dans Spipla valeur des attributs suivants

bull $attributs[first_objetSpip] = rubrique ou article ou bull $attributs[first_id_rubrique] ou $attributs[first_id_article] ou bull $attributs[id_rubrique] ou $attributs[id_article] ou

et retournera une valeur lsquovraiersquo si lrsquoimportation srsquoest bien passeacute En cas drsquoerreur la variable globale$errNouvelleFiche contiendra le message drsquoerreur

SPIP-XMLdoc 944

3 Principes de traitement des laquo Fiches XML raquo

31 Le type dune FICHE XMLOn peut ecirctre ameneacute agrave geacuterer plusieurs types de fiches par exemple fiche Document fiche Client ficheFournisseur hellipLe type dune fiche sera donneacute par lattribut TypeDocXml de la balise XML ltDocumentXMLgt

Par exemple Introduction de la fiche descriptive drsquoun client par ltDocumentXML TypeDocXML=FicheClientgt

Par exemple Introduction de la fiche descriptive drsquoun devis par ltDocumentXML TypeDocXML=DevisPiscinegt

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquoLe traitement drsquoune fiche XML sera controcircleacute par un laquo modegravele de fiche XML raquo et sera effectueacute par deslaquo parsers raquo XML

Un laquo modegravele de fiche XML raquo et les laquo parsers raquo associeacutes sont speacutecifiques agrave un type de fiche XML

A chaque type de fiche XML sera associeacute un couple de laquo parsers raquo XML chargeacutes de geacuteneacuterer le codeHTML neacutecessaire pour visualiser le contenu drsquoune fiche ou pour preacutesenter le formulaire de saisie modification de cette ficheChaque laquo parser raquo est composeacute drsquoun ensemble de proceacutedures prenant en charge les traitements agraveeffectuer sur chaque balise XML de la fiche Lors de son ouverture Sur son contenu Lors de sa fermeture

Chaque parser agrave utiliser est identifieacute par l lsquoattribut Handler de la balise XML ltDocumentXMLgt Dans la fiche cet attribut identifie le laquo parser raquo agrave utiliser pour traiter la valeur des diffeacuterents

champs de la fiche Dans le laquo modegravele de fiche XML raquo cet attribut identifie le laquo parser raquo agrave utiliser pour afficher la fiche

et le formulaire associeacute Regravegle de nommage Si le laquo parser raquo de la fiche XML est laquo xxx raquo celui de son modegravele doit ecirctre

laquo Modelexxx raquo

Le couple de parsers geacuteneacuteriques par deacutefaut est laquo Handler=FicheXML raquo pour la fiche laquo Handler=ModeleFicheXML raquo pour son modegravele

NB Les 2 laquo parsers raquo sont donc toujours utiliseacutes quel que soit le contexte

A chaque type de fiche XML sera associeacute un laquo modegravele de fiche XML raquo qui sera interpreacuteteacute par leparser Ce modegravele deacutecrit le code HTML agrave geacuteneacuterer ainsi que les eacuteventuels traitements agrave effectuer pourchaque balise XML de la fiche Dans le cas de lrsquoaffichage du contenu de la fiche le modegravele deacutecrit la mise en page de la fiche Dans le cas de la preacutesentation du formulaire de saisie ou de modification drsquoune fiche le mecircme modegravele

deacutecrit la mise en page du formulaire et les valeurs par deacutefaut des diffeacuterents champs Regravegle de nommage Si le type de la fiche XML est laquo yyy raquo celui de son modegravele doit ecirctre

laquo Modeleyyy raquo

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 9: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 944

3 Principes de traitement des laquo Fiches XML raquo

31 Le type dune FICHE XMLOn peut ecirctre ameneacute agrave geacuterer plusieurs types de fiches par exemple fiche Document fiche Client ficheFournisseur hellipLe type dune fiche sera donneacute par lattribut TypeDocXml de la balise XML ltDocumentXMLgt

Par exemple Introduction de la fiche descriptive drsquoun client par ltDocumentXML TypeDocXML=FicheClientgt

Par exemple Introduction de la fiche descriptive drsquoun devis par ltDocumentXML TypeDocXML=DevisPiscinegt

32 Le traitement drsquoune FICHE XML Modegravele et laquo parsers raquoLe traitement drsquoune fiche XML sera controcircleacute par un laquo modegravele de fiche XML raquo et sera effectueacute par deslaquo parsers raquo XML

Un laquo modegravele de fiche XML raquo et les laquo parsers raquo associeacutes sont speacutecifiques agrave un type de fiche XML

A chaque type de fiche XML sera associeacute un couple de laquo parsers raquo XML chargeacutes de geacuteneacuterer le codeHTML neacutecessaire pour visualiser le contenu drsquoune fiche ou pour preacutesenter le formulaire de saisie modification de cette ficheChaque laquo parser raquo est composeacute drsquoun ensemble de proceacutedures prenant en charge les traitements agraveeffectuer sur chaque balise XML de la fiche Lors de son ouverture Sur son contenu Lors de sa fermeture

Chaque parser agrave utiliser est identifieacute par l lsquoattribut Handler de la balise XML ltDocumentXMLgt Dans la fiche cet attribut identifie le laquo parser raquo agrave utiliser pour traiter la valeur des diffeacuterents

champs de la fiche Dans le laquo modegravele de fiche XML raquo cet attribut identifie le laquo parser raquo agrave utiliser pour afficher la fiche

et le formulaire associeacute Regravegle de nommage Si le laquo parser raquo de la fiche XML est laquo xxx raquo celui de son modegravele doit ecirctre

laquo Modelexxx raquo

Le couple de parsers geacuteneacuteriques par deacutefaut est laquo Handler=FicheXML raquo pour la fiche laquo Handler=ModeleFicheXML raquo pour son modegravele

NB Les 2 laquo parsers raquo sont donc toujours utiliseacutes quel que soit le contexte

A chaque type de fiche XML sera associeacute un laquo modegravele de fiche XML raquo qui sera interpreacuteteacute par leparser Ce modegravele deacutecrit le code HTML agrave geacuteneacuterer ainsi que les eacuteventuels traitements agrave effectuer pourchaque balise XML de la fiche Dans le cas de lrsquoaffichage du contenu de la fiche le modegravele deacutecrit la mise en page de la fiche Dans le cas de la preacutesentation du formulaire de saisie ou de modification drsquoune fiche le mecircme modegravele

deacutecrit la mise en page du formulaire et les valeurs par deacutefaut des diffeacuterents champs Regravegle de nommage Si le type de la fiche XML est laquo yyy raquo celui de son modegravele doit ecirctre

laquo Modeleyyy raquo

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 10: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1044

Par exemple Premiegravere ligne de la fiche descriptive dun utilisateur

ltDocumentXML TypeDocXML=FicheUser Handler=FicheXMLgt

Premiegravere ligne du modegravele associeacute ltDocumentXML TypeDocXML=ModeleFicheUser Handler=ModeleFicheXMLgt

33 Le contenu dun modegravele de FICHE XMLUn modegravele de fiche XML va deacutecrire chaque champ (attribut) de la fiche La description devra donner lesinformations neacutecessaires tant agrave laffichage du champ quagrave sa saisie dans un formulaire

Un modegravele de fiche XML aura la structure suivante (la description complegravete de tous les attributs possibles estdonneacutee en annexe)

NB Dans la description ci-dessous les balises XML et leurs attributs sont en gras les attributs en gras sont choisis par le deacuteveloppeur dans une liste imposeacutee les mots en italique ou en gras-italique sont choisis librement par le deacuteveloppeur seuls ont eacuteteacute mentionneacutes les principaux attributs associeacutes aux diffeacuterentes valeurs de lrsquoattribut laquo TypeInput raquo

ltDocumentXML TypeDocXML=Fichegt

ltCadre Titre=titre du groupe de champs gt

ltnomChampDeTypeTexte Label= texteDsFormulaire InputOblig= TypeInput=TexteCmt =cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextegt

ltnomChampDeTypeTextArea Label= texteDsFormulaire InputOblig= TypeInput=TextAreaNbLignes=nbLignesBoite Cmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeTextAreagt

ltTitre Titre=titre sans cadre associeacute gt

ltnomChampDeTypeSelect Label=texteDsFormulaire InputOblig= TypeInput=SelectTable=spip_table ChpValOption=champTable champTable champTable ChpTxtOption=champTable Test1=critegravereCmt=cmtDsFormulaire

gt Valeur par deacutefaut du champltnomChampDeTypeSelectgt

ltCadregt

ltDocumentXMLgt

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 11: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1144

34 Le traitement drsquoune FICHE XML les laquo parsers raquoLe traitement drsquoun document XML fait appel au parser XML fourni par PHP Ce parser est principalementcomposeacute de proceacutedures appeleacutees lors du parcours du document pour chaque entreacutee contenu et fin de baliserencontreacutes

Le traitement drsquoune laquo fiche XML raquo est reacutealiseacute par 2 laquo parsers raquo dont les proceacutedures permettront de geacuteneacuterer lecode neacutecessaire agrave lrsquoaffichage de la fiche ou du formulaire associeacute

NB Pour plus drsquoinformation sur lrsquoutilisation du parser et des proceacutedures associeacutees voir la documentation PHP

Les 2 laquo parsers raquo associeacutes au type de fiche Primetype_de_fichePrime sont donneacutes par les fichiers laquo DocXML_type_de_fichephp raquoet laquo DocXML_Modeletype_de_fichephp raquo

Chacun de ces fichiers contient la deacutefinition des proceacutedures de traitement appeleacutees lors de lrsquoanalyse de lalaquo fiche XML raquo

laquo DocXML_type_de_fichephp raquo fournit les proceacutedures bull type_de_fiche_startElementHandler() Ouverture drsquoune balise XMLbull type_de_fiche_characterDataHandler() Contenu drsquoune balise XMLbull type_de_fiche_endElementHandler() Fermeture drsquoune balise XML

laquo DocXML_Modeletype_de_fichephp raquo fournit les proceacutedures bull Modeletype_de_fiche_startElementHandler()bull Modeletype_de_fiche_characterDataHandler()bull Modeletype_de_fiche_endElementHandler()

Pour ecirctre exact le filtre laquo processXML raquo fournit agrave un laquo parser raquo commun agrave tout document XML ses propresproceacutedures de traitement des balises XML Ce sont ces proceacutedures communes qui vont appeler les proceacuteduresspeacutecifiques associeacutees au type de fiche traiteacutee

Lors de lrsquoanalyse drsquoune laquo fiche XML raquo le fonctionnement du filtre laquo processXML raquo est le suivant

bull La balise ltDocumentXMLgt est rechercheacutee au deacutebut du texte agrave traiterSi elle nrsquoest pas trouveacutee on applique le filtre laquo propre raquo au texte et on retourne le reacutesultat

bull Un parser PHP est initialiseacute et activeacute sur le texte agrave traiter (proceacutedures communes)

bull La 1egravere balise ouvrante rencontreacutee (ltDocumentXMLgt) est soumise agrave la proceacutedure communelaquo startElementHandler raquo qui analyse ses attributs (TypeDocXML et Handler) et les transmet aux autresproceacutedures communes laquo characterDataHandler raquo et laquo endElementHandler raquo par la suite tout appel agrave lrsquounedes proceacutedures commune sera relayeacutee agrave la proceacutedure speacutecifique du handler speacutecifieacute

bull Dans le cas du traitement drsquoun laquo modegravele de fiche XML raquo chaque balise rencontreacutee est traiteacutee par lesproceacutedures speacutecifiques au type de fiche Le code HTML adeacutequat est geacuteneacutereacute et les valeurs par deacutefaut desbalises sont sauvegardeacutees

bull Dans le cas du traitement drsquoune laquo fiche XML raquo

La 1egravere balise ouvrante (ltDocumentXMLgt) est traiteacutee par la proceacutedure speacutecifiquelaquo type_de_fiche_startElementHandler raquo qui va drsquoabord reacute-activer le filtre laquo processXML raquo sur lemodegravele associeacute (appel reacute-entrant du filtre avec un 2egraveme paramegravetre laquo type_de_fiche raquo)

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 12: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1244

Le modegravele agrave traiter sera alors rechercheacute drsquoabord dans le fichier laquo ToolsModeles_fichesXMLmodeletype_de_fichexml raquopuis si ce fichier nrsquoexiste pas dans le texte de lrsquoarticle Spip ayant les caracteacuteristiques suivantes

bull laquo Surtitre=rsquoModeletype_de_fichersquo raquobull Mot-cleacute laquo TypeArticle=rsquoModeleFicheXMLrsquo raquo

Toutes les balises du modegravele sont alors traiteacutees par le laquo parser raquo associeacute tel que deacutecrit ci-dessus (1er

cas Traitement drsquoun laquo modegravele de fiche XML raquo)

Le modegravele ayant eacuteteacute traiteacute la proceacutedure laquo type_de_fiche_startElementHandler raquo termine sonttraitement et lrsquoanalyse de la fiche se poursuit (les valeurs de chaque balise sont sauvegardeacutees)

Lorsque la balise fermante ltDocumentXMLgt marquant la fin de la fiche est traiteacutee par la proceacutedurelaquo type_de_fiche_endElementHandler raquo les valeurs des balises de la fiche sont renseigneacutees dans lecode geacuteneacutereacute par le traitement du modegravele puis ce dernier est retourneacute agrave lrsquoappelant du filtre

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 13: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1344

4 La distribution laquo SPIP ndash XML raquo

41 Les composantsLa distribution est composeacutee de la preacutesente documentation lsquoSPIP-XMLpdfrsquo et drsquoune archive lsquoSpip-XMLziprsquodont les fichiers doivent ecirctre extraits dans le reacutepertoire contenant le site sous Spip

Les fichiers livreacutes (et leurs reacutepertoires) peuvent ecirctre regroupeacutes en 3 familles bull Les fichiers drsquoinstallation (voir leur utilisation dans le chapitre laquo Mise en œuvre raquo)bull Les squelettes utiliseacutes dans lrsquoexemple drsquoapplication laquo Devis raquobull Le filtre laquo processXML raquo et les proceacutedures associeacutees au traitement des fiches XML

Les fichiers drsquoinstallation

install_Spip-XMLphp Fichier agrave exeacutecuter apregraves extraction de lrsquoarchive laquo Spip-XMLzip raquo

Reacutepertoire laquo Install_SPIP-XML raquo Reacutepertoire creacuteeacute par lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo

bull install_MotsClesphp Deacutefinition des mots-cleacutes Spip utiliseacutes par le package laquo SPIP-XML raquoNB Fichier appeleacute par le fichiers drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull install_Modelesphp Deacutefinition des modegraveles de laquo Fiches XML raquo utiliseacutes dans cette documentation etutiliseacutes par lrsquoexemple drsquoutilisation laquo Devis raquoraquoNB Fichier appeleacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull spip_params_applisql Structure et donneacutees de la table MySQL lsquoltpreacutefixe des tablesgt_params_applirsquocontenant les paramegravetres du package laquo SPIP-XML raquo (et de lrsquoapplication)NB Ce fichier est exploiteacute par le fichier drsquoinstallation lsquoinstall_Spip-XMLphprsquo

bull Reacutepertoires laquo Modifs_SPIP_xxx raquo Fichiers modifieacutes dans SPIP Version xxxChacun de ces reacutepertoires correspond agrave une version de Spip - Modifs_Spip_1465 eacutedition 1465 de Spip 14 - Modifs_Spip_1604 eacutedition 1604 de Spip 16NB Voir lrsquoutilisation de ces reacutepertoires dans le chapitre laquo Mise en œuvre raquo

Les squelettes de lrsquoexemple laquo Devis raquo

affLienIdentificationphp3 Squelette agrave inclure lagrave ougrave on veut afficher un lien vers une identification SpipCe lien active un popup nommeacute laquo loginSpip raquo et y affiche le squelette laquo loginphp3 raquo (cf login-xmlhtml ci-dessous)Voir un exemple drsquoutilisation de ce squelette dans lrsquoexemple laquo Devis raquo

loginphp3 Activation du squelette laquo loginhtml raquo

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 14: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1444

login-xmlhtml Squelette associeacute agrave laquo loginphp3 raquo (agrave renommer laquo loginhtml raquo)Ce squelette ouvert dans un popup nommeacute laquo loginSpip raquo permet agrave lrsquointernaute de srsquoidentifier (laquo auteur raquoconnu de Spip)Si lrsquointernaute est deacutejagrave identifieacute ce popup lui permet de se deacuteconnecter ou srsquoil est laquo administrateur nonrestreint raquo drsquoacceacuteder agrave lrsquoespace priveacute de Spip (ouvert alors dans une fenecirctre seacutepareacutee)Apregraves identification ou deacuteconnexion la fenecirctre ayant activeacute le popup est rafraicircchie par appel au fichierlaquo refreshLoginOpenerphp raquo

Une fois lrsquoutilisateur identifieacute la fonction booleacuteenne laquo adminRubrique(ltid_rubriquegt) raquo (deacutefinie via le fichierlaquoToolsparamsAppliphp raquo) permet de savoir srsquoil administre une rubrique donneacutee (voir un exempledrsquoutilisation dans le squelette laquo affLiensNewFichesXML raquo ci-dessous)

NB Ce squelette est compatible avec son utilisation par lrsquoespace priveacute de Spip

refreshLoginOpenerphp Activeacute par laquo login-xmlhtml raquo pour rafraicircchir la fenecirctre ayant ouvert le popupdrsquoidentification SpipLe rafraichissement permet de modifier lrsquoaffichage de la fenecirctre si celle-ci exploite le fait que lrsquoutilisateursrsquoest identifieacute ou non

affLiensNewFichesXMLphp3 Activation du squelette laquo affLiensNewFichesXMLhtml raquo

affLiensNewFichesXMLhtml Squelette agrave inclure lagrave ougrave on veut afficher les liens vers les formulaires decreacuteation de nouvelles laquo Fiches XML raquo associeacutees agrave la rubrique en cours

Dans ce squelette une fiche est dite laquo associeacutee raquo agrave une rubrique si son type contient - le contenu de la variable globale laquo $xml_TypeFicheXML raquo si celle-ci est non-vide - ou le mot-cleacute de type laquo TypeRubriqueXML raquo de la rubrique

Par exemple si $xml_TypeFicheXML=rsquoDevisrsquo ou si la rubrique a le mot-cleacute TypeRubriqueXML=rsquoDevisrsquo cesquelette affichera les liens vers le formulaire de creacuteation de fiches de type laquo DevisPiscine raquo oulaquo mon_Devis_a_moi raquohellipNB En fait on recherchera les modegraveles de fiche lsquoModelehellipDevishelliprsquo

rubrique-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo rubriquehtml raquo)Crsquoest une version de laquo rubrique-disthtml raquo montrant une utilisation du XML dans SpipCe squelette affiche un lien vers une identification laquo Spip raquo par inclusion du squelettelaquo affLienIdentification raquo puis si lrsquoutilisateur est administrateur de la rubrique en cours ou drsquoune de sesparents (cf fonction laquo adminRubrique(id_rubrique) raquo affiche les liens vers les formulaires de creacuteation desfiches associeacutees agrave la rubrique par inclusion du squelette laquo affLiensNewFichesXML raquoNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo rubrique-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquoNB Ce squelette gegravere aussi une redirection vers le squelette deacutesigneacute par lrsquoeacuteventuel mot-cleacute de typelaquo Squelette raquo et il nrsquoaffiche pas de liens vers des rubriques ou articles ayant le mot-cleacute laquo Dummy raquo oulaquo ModeleFicheXML raquo

article-xmlhtml Squelette livreacute pour lrsquoexemple drsquoutilisation laquo Devis raquo (agrave renommer laquo articlehtml raquo)Crsquoest une version de laquo article-disthtml raquo montrant lrsquoutilisation du XML dans SpipOn a simplement ajouteacute lrsquoappel au filtre laquo processXML raquo lors du traitement du lsquoTEXTErsquo de lrsquoarticleNB Les lignes ajouteacutees ou modifieacutees par rapport agrave laquo article-disthtml raquo sont identifieacutees par lecommentaire lsquo XML rsquo

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 15: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1544

Le filtre laquo processXML raquo et le traitement des fiches XML

fonctionsXmlphp Filtre laquo processXML raquo et interface avec les parsersLe filtre laquo processXML raquo est utiliseacute pour traiter le contenu XML drsquoun objet SPIP (typiquement un articleou une rubrique) Ce fichier contient aussi lrsquoensemble des fonctions neacutecessaires au fonctionnement desparsers deacutecrits ci-dessous

Exemple drsquoutilisation [(TEXTE|processXML)]

DocXml_FicleXmlphp Parser XML par deacutefautCe parser traite une laquo Fiche XML raquo Il active le parser traitant le modegravele de la fiche et renseigne lesvaleurs des diffeacuterents champs dans le code html visualisant la fiche ou le formulaire associeacute

DocXml_ModeleFicleXmlphp Parser XML par deacutefautCe parser traite un modegravele de laquo Fiche XML raquo et geacutenegravere le code html visualisant une fiche et le formulaireassocieacute

nouvelleFichephp Importation drsquoune nouvelle fiche dans SpipCe fichier est activeacute par la soumission du formulaire de creacuteation modification drsquoune fiche

mes_fonctionsphp Filtres diversNB Ce fichier appelle laquo ToolsparamsAppliphp raquo et laquo mes_fonctionsAppliphp raquo

mes_fonctions-xmlphp3 Simple inclusion du fichier laquo mes_fonctionsphp raquo (agrave renommer laquo mes_fonctionsphp3 raquo)NB Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans le site y reporter simplement lrsquoinclusion du fichierlsquomes_fonctionsphprsquo

mes_fonctionsAppliphp Proceacutedures et filtres utiliseacutees lors du traitement des fichesEn particulier ce fichier deacutefinit

- Le filtre laquo balisesXML raquo qui convertit les balises drsquoune laquo Fiche XML raquo en un tableau associatif Notez que seules les valeurs sont retourneacutees et que les attributs des balises ne sont pas disponibles

Exemple drsquoutilisation lt $tableau = balisesXML( lsquo[(TEXTE|texte_script)]rsquo ) gt On a alors $tableau[ltbalisegt] = ltvaleur_balisegt

- La proceacutedure laquo importObjectIntoSpip( objetAppli attributs ) raquo qui prend en charge lrsquoimportation drsquoun objet applicatif de type laquo objetAppli raquo et dont les attributs seront donneacutes par le tableau associatif laquo attributs raquo Une variable globale laquo $import_ltobjetAppligt raquo devra ecirctre deacutefinie (par exemple dans le fichier ToolsparamsAppliphp) elle contiendra la seacutequence des fichiers drsquoimportation Spip eacuteleacutementaires agrave traiter (cf reacutepertoire ToolsModeles_import deacutecrit ci-dessous) Cette fonction retourne laquo vrai raquo si lrsquoobjet a eacuteteacute importeacute dans la base Spip retourne le texte explicatif de lrsquoerreur sinon Si lrsquoimportation a eacuteteacute effectueacutee le tableau laquo attributs raquo contiendra en plus au retour

$attributs[first_objetSpip] =gt rubrique ou article ou (i-e type du 1er objet Spip creacuteeacute) $attributs[ first_id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute $attributs[ id_$attributs[first_objetSpip] ] =gt id du 1er objet Spip creacuteeacute

Exemple drsquoutilisation

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 16: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1644

Supposons le code suivant $attributs = array( id_rubrique =gt 0 id_secteur =gt $idSecteur id_parent =gt $idRubrique TitreRubrique =gt $TitreRubrique DescriptionRubrique =gt $DescriptionRubrique TexteRubrique =gt $TexteRubrique ) importObjectIntoSpip(RubPrivee $attributs)

Si le fichier laquo ToolsparamsAppliphp raquo deacutefinit la variable globale $GLOBALS[import_RubPrivee] = import_Rubrique_Stdxml import_Mot_Privexml

alors lrsquoappel ci-dessus agrave la fonction laquo importObjectIntoSpip raquo creacuteera une rubrique Spip - avec le mot-cleacute laquo Prive raquo (qui devra preacuteexister dans Spip) - et dont le titre la description hellip seront renseigneacutes avec les variables utiliseacutees dans le code pris en exemple NB Le fichier import_Mot_Privexml devra ecirctre creacuteeacute en prenant comme exemple les fichiers lsquoToolsModeles_importimport_Mot_xxxxmlrsquo

Autres exemples drsquoutilisation Voir les fichiers drsquoinstallation du package laquo SPIP-XML raquo

- install_Spip-XMLphp - Install_SPIP-XMLinstall_Modelesphp

- Install_SPIP-XMLinstall_MotsClesphp

Reacutepertoire laquo Ressources raquo

Ce reacutepertoire contiendra les fichiers eacuteventuellement chargeacutes via le champ drsquoune laquo Fiche XML raquoCf la proceacutedure laquo getUploadedFile raquo dans le fichier laquo ToolsgetUploadedFilephp raquo ainsi que le paramegravetrelaquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo

Reacutepertoire laquo icones raquo

Ce reacutepertoire contient des icocircneshellip dont certaines sont utiliseacutees par ce package

Reacutepertoire laquo Tools raquo

bull paramsAppliphp Paramegravetres de lapplicationCrsquoest dans ce fichier que devront ecirctre deacutefinies les variables globales laquo import_lttype_de_fichegt raquodonnant les modegraveles drsquoimportation dans Spip (voir le paragraphe laquo Mise en œuvre raquo ci-dessous)Ce fichier inclut les fichiers laquo paramsSpipphp raquo et laquo paramsXMLphp raquo

bull paramsSpipphp Paramegravetres associeacutes agrave lutilisation de Spip par lapplicationCe fichier deacutefinit la proceacutedure laquo adminRubrique( $id_rubrique ) raquo qui retourne la valeurbooleacuteenne laquo vrai raquo si lrsquointernaute est identifieacute comme connu de Spip avec les droits

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 17: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1744

drsquoadministration de la rubrique laquo $id_rubrique raquo ou de lrsquoune de ses parents

Ce fichier renseigne la variable globale $userIdentified Vrai si lrsquointernaute est connu de Spip

Si lrsquointernaute est connu de Spip alors ce fichier renseigne aussi les variables globales $userId Identifiant interne de Spip (id_auteur) $userName $userLogin $userEmail Informations connues de Spip $userRights Droits de lrsquointernaute dans l lsquoespace priveacute de Spip =rsquoadminrsquo =rsquoadminRestreintrsquo =rsquoredacteurrsquo ou =rsquoforumrsquo

bull paramsXmlphp Ce fichier deacutefinit la proceacutedure laquo setParamsXML( $typeFicheXML $id_article_modele ) raquoqui renseigne les diffeacuterentes variables globales neacutecessaires au traitement des fiches XML

Les paramegravetres drsquoappel de cette fonction sont $typeFicheXML Type de la fiche agrave traiter Si vide le type sera donneacute - par la variable globale $xml_TypeFicheXML - ou par le mot-cleacute de type laquo TypeFicheXML raquo de la rubrique ou de lrsquoarticle en cours

$id_article_modele Ndeg de larticle Spip contenant le modegravele de la fiche agrave traiterSi vide sera renseigneacute en recherchant larticle

- de mot-cleacute ModeleFicheXML- et de surtitre Modelelttype_de_fichegt

bull getUploadedFilephp Ce fichier deacutefinit la proceacutedure laquo getUploadedFile( hellip ) raquo utiliseacutee lors de lacreacuteation ou modification drsquoune fiche XML dont lrsquoun des champs est un fichier agrave charger sur leserveurNB Seules certaines extensions sont autoriseacutees (txt csv pdf doc xls jpg jpeg gif ziptar gz z)NB Le paramegravetre laquo PathToRessources raquo de la table MySQL laquo spip_appli_params raquo donne lechemin relatif au site vers le reacutepertoire ougrave seront rangeacutes les fichiers chargeacutes (deacutefautlaquo Ressources raquo)

bull sitecss Feuille de style appeleacutee dans les squelettes distribueacutes (en plus de spip_stylecss)

bull utiljs Variables et proceacutedures JavaScript (utiliseacute pour les dimensions de la fenecirctre de login)

bull classeDebugphp Support aux moyens de debug inteacutegreacutes au code php

bull Reacutepertoire laquo ToolsModeles_fiches_XML raquo

Ce reacutepertoire rassemble les modegraveles de fiches (reacutepertoire par deacutefaut sinon les modegraveles defiches sont dans le reacutepertoire dont le chemin relatif au site est donneacute par le paramegravetrelaquo PathToModelsXML raquo de la table MySQL laquo spip_appli_params raquo)

NB Mecircme si les fichiers sont utiliseacutes agrave la place des articles Spip ces derniers doivent exister(mot-cleacute titre et surtitre renseigneacutes) avec un texte contenant une balise ltDocumentXMLgt sanscontenu mais avec ses attributs laquo TypeDocXML raquo et laquo Handler raquo correctement renseigneacutes

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 18: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1844

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

bull Reacutepertoire laquo ToolsModeles_import raquo

Ce reacutepertoire rassemble les fichiers contenant les modegraveles drsquoimportation des objets Spip(reacutepertoire par deacutefaut sinon les modegraveles drsquoimportation sont dans le reacutepertoire dont le cheminrelatif au site est donneacute par le paramegravetre laquo PathToImportModels raquo de la table MySQLlaquo spip_appli_params raquo)

NB Ce reacutepertoire par deacutefaut accueillera les modegraveles livreacutes avec le package

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 19: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 1944

42 La mise en œuvre de lrsquoinstallation Installer les fichiers

Installation du package laquo Spip-XML raquo

Commencez par installer et configurer Spip dans un reacutepertoire que nous appellerons ici laquo SiteSpip raquo

Ensuite extrayez lrsquoarchive laquo Spip-XMLzip raquo dans ce reacutepertoire (ou dans le reacutepertoire drsquoun site existant baseacutesur Spip)

Modifications des fichiers Spip

Le reacutepertoire laquo Install_SPIP-XML raquo creacuteeacute agrave la base de votre site lors de lrsquoextraction de lrsquoarchive laquo Spip-XMLzip raquo contient des reacutepertoires laquo Modifs_SPIP_vvvv raquo donnant les 3 fichiers Spip qui doivent remplacerceux existant de mecircme nom

- inc-loginphp3 - ecrireinc_importphp3

- ecrireinc_textephp3

Pour installer les laquo bons raquo fichiers visualisez le fichier laquo ecrireinc_versionphp3 raquo pour connaicirctre la versionlaquo vvvv raquo de la base (donneacutee par lrsquoaffectation de la variable laquo $spip_version raquo vers la ligne 150 du fichier)

Par exemple helliphelliphellip version de la base$spip_version = 1604

version de spip$spip_version_affichee = 16helliphelliphellip =gt version 1604

Si lrsquoun des reacutepertoires laquo Install_SPIP-XMLModifs_SPIP_vvvv raquo correspond agrave la version de Spip installeacutee dansvotre site (lsquoInstall_SPIP-XMLModifs_SPIP_1604rsquo dans lrsquoexemple ci-dessus) copiez son contenu dans lereacutepertoire laquo SiteSpip raquo (les fichiers modifieacutes remplaceront automatiquement mais avec votre accord lesfichiers existants de mecircme nom)

Sinon choisissez le reacutepertoire le mieux adapteacute agrave votre version de Spip (i-e la version anteacuterieure la pluslaquo proche raquo) visualisez les modifications introduites dans les fichiers Spip (les lignes modifieacutees sont identifieacuteespar la chaicircne laquo XML raquo) et reportez manuellement ces modifications dans les fichiers de mecircme nompreacutesents dans votre site

Renommage des squelettes et fichiers livreacutes

Pour utiliser le package Si le fichier lsquomes_fonctionsphp3rsquo existe deacutejagrave dans votre site ajoutez agrave sa fin lrsquoinstruction php

include lsquomes_fonctionsphprsquo Sinon renommez le fichier lsquomes_fonctions-xmlphp3rsquo en lsquomes_fonctionsphp3rsquo

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 20: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2044

Pour activer lrsquoexemple laquo Devis raquo livreacute avec le package renommez les squelettes suivants (ou reportez leurcontenu dans les fichiers existants)

- article-xmlhtml =gt articlehtml- rubrique-xmlhtml =gt rubriquehtml- login-xmlhtml =gt loginhtml

43 La mise en œuvre de lrsquoinstallation Mettre agrave jour la base

Une fois lrsquoarchive installeacutee et les fichiers Spip modifieacutes exeacutecutez le programme drsquoinstallation en tapant lrsquourlsuivante dans votre navigateur

httplturl_de_votre_sitegtinstall_Spip-XMLphp

Les actions suivantes sont effectueacutees

Creacuteation des groupes de mots-cleacutes utiliseacutes par le packageCreacuteation de la table MySQL laquo spip_appli_params raquo si elle nrsquoexiste pas deacutejagraveNB Lrsquoeacuteventuel preacutefixe des tables de votre site sera pris en compteNB Cette table contient des paramegravetres qui deviendront des variables globales en particulier $PathToModelsXML $PathToImportModels

- Creacuteation des groupes de mots-cleacutes utiliseacutes par le package

- Copie des modegraveles drsquoimportation non preacutesents dans le reacutepertoire donneacute par le paramegravetrelaquo PathToImportModels raquo de la table laquo spip_appli_params raquo (si non vide et diffeacuterent delsquoToolsModeles_importrsquo)

- Copie des modegraveles de fiches non preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquode la table laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo)

- Creacuteation de la rubrique laquo Modegraveles de Fiches XML raquo et creacuteation des articles deacutefinissant les modegravelespreacutesents dans le reacutepertoire lsquoToolsModeles_fiches_XMLrsquo (seule balise ltDocumentXMLgt silaquo PathToModelsXml raquo est renseigneacute)

- Creacuteation des articles contenant les modegraveles de fichesNB Les modegraveles deacutejagrave preacutesents dans le reacutepertoire donneacute par le paramegravetre laquo PathToModelsXml raquo de latable laquo spip_appli_params raquo (si non vide et diffeacuterent de lsquoToolsModeles_fiches_XMLrsquo) ne sont pas creacuteeacutes oumis-agrave-jour

- Creacuteation de la rubrique laquo Test du package Spip-XML raquo et de la sous-rubrique laquo Reacutediger des devis raquo(exemple drsquoutilisation)

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 21: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2144

44 La mise en œuvre de lrsquoinstallation Activer lrsquoexemple laquo Devis raquo

Visualisez votre site (httplturl_de_votre_sitegt)

Srsquoil eacutetait vierge voici ce qui srsquoaffichera (les copies drsquoeacutecran correspondent agrave Spip 1604)

Affichez la rubrique laquo Reacutediger des devis raquo

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 22: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2244

Activez le lien laquo Identifiez-vous raquo Le popup suivant srsquoaffiche

Apregraves avoir entreacute le login et le mot de passe qui vous donne accegraves agrave lrsquoespace priveacute de Spip les fenecirctresdeviennent

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 23: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2344

Activez le lien laquo Reacutediger un devis pour une piscine raquo le formulaire srsquoaffiche (avec les champs laquo Nom raquo etlaquo Email raquo renseigneacutes avec les paramegravetres de Spip)

Apregraves renseignement du formulaire et enregistrement la page ayant activeacute le formulaire est re-afficheacutee

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 24: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2444

Si vous cliquez sur le nom du devis sa fiche srsquoaffiche et si vous ecirctes laquo identifieacutee raquo un lien vous permet de lamodifier

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 25: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2544

Annexe 1 ndash Modegravele de FICHE XML Syntaxe des balises et de leurs attributs

Balise ltDocumentXMLgt

Cette balise contient la totaliteacute de la laquo fiche XML raquo et doit ecirctre le contenu inteacutegral drsquoune balise Spip(typiquement texte drsquoun article ou drsquoune rubrique)

Attributs

TypeDocXML=PrimeModeletype_de_fichePrimeIdentifie le type de fiche auquel est associeacute le modegravele

Une fiche de ce type commencera par la balise ltDocumentXML TypeDocXML=Primetype_de_fichePrime gtAu type de fiche Primetype_de_fichePrime devra correspondre une variable globale

laquo $import_type_de_fiche raquo donnant la seacutequence des fichiers drsquoimportation agrave traiter pourimporter la fiche dans Spip $import_type_de_fiche = lsquofichier1xml fichier2xmlhellip fichierkxmlrsquo

NB Ces fichiers sont attendus dans le reacutepertoire laquo ToolsModeles_import raquo Les variables laquo $import_type_de_fiche raquo sont deacutefinies dans le fichier

laquo ToolsparamsAppliphp raquo Lrsquoimportation dans Spip de la fiche est assureacutee par le fichier laquo nouvelleFichephp raquo activeacute

suite agrave la validation du formulaire de saisie modification drsquoune fiche

Handler=PrimeModeleparserPrimeIdentifie le parser agrave utiliser pour geacuteneacuterer le code HTML drsquoaffichage de la fiche et du formulaireassocieacute agrave la fiche agrave traiterRappel Celle-ci commencera par la balise ltDocumentXML Handler=PrimeparserPrime hellip gt

FormatType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage de la ficheSyntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation par deacutefaut des champs dans le cas de lrsquoaffichage du formulaireSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Html_TitreCode html par deacutefaut agrave afficher avant les titres Ce code sera inseacutereacute avant chaque titre produitpar une balise ltCadregt ou ltTitregt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 26: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2644

Par exemple Html_Titre=sectBR sect geacutenegraverera le code html ltBR gt

Class_TitreStyle par deacutefaut agrave utiliser pour lrsquoaffichage des titres (cf balises ltCadregt et ltTitregt )Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

Class_LabelStyle par deacutefaut agrave utiliser pour lrsquoaffichage du libelleacute des champsSyntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champsSyntaxe Class_ Valeur =Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle par deacutefaut agrave utiliser pour lrsquoaffichage de la valeur des champs dans les formulairesDeacutefaut Lrsquoattribut Class_ValeurSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle par deacutefaut agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie des champsSyntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

WidthLargeur des encadrements eacuteventuelsDeacutefaut 40 caractegraveresSyntaxe Attribut laquo WIDTH raquo de la balise html ltTABLEgt

BorderEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregtSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

BorderFormEpaisseur par deacutefaut agrave utiliser pour les balises ltCadregt lors de lrsquoaffichage du formulaireDeacutefaut 1 pixelSyntaxe Attribut laquo BORDER raquo de la balise html ltTABLEgt

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute des champsDeacutefaut Alignement agrave droite des libelleacutesSyntaxe AlignLabels=Right

AlignLabels=Left

DefautNbCarsNombre de caractegraveres par deacutefaut dans les boites de dialogue permettant la saisie des champs detype lsquotextersquoSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

TraitementIndicateurs par deacutefaut controcirclant le traitement des champs Les indicateurs speacutecifieacutes icisrsquoappliqueront agrave tous les champs de la ficheSyntaxe

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 27: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2744

Traitement=NoAffVide Ne pas afficher les lignes (vides) dun champ vide

Evnt_event_jsEvegravenement JavaScript agrave inclure dans la balise html ltFORMgtSyntaxe Code JavaScript

laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltFORMgt

Exemple Evnt_onSubmit=if(thisNbSacsvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10))return false

NB Le nom du formulaire html est lttype de fiche XML gt

Exemple de balise ltDocumentXMLgt

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || thisNomRubriquevaluesubstring(05)==Nom d) crarr alert(Nom du projet absent)return false FormatForm=Vertical Format=Horizontal AlignLabels=left Class_Titre=titre3 Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG SRC=imagesfiletmauvegif WIDTH=100 HEIGHT=9sectsectBR sect Border=0 Width=100 Traitement=NoAffVide gt helliphelliphellip ltDocumentXML gt

On trouvera par exemple dans un feuille de style les classes suivantes

titre3 font-weightbold font-size12px text-aligncenter

txtbleunuitAtxtbleunuitAtxtbleunuitvisitedAtxtbleunuitlinkAtxtbleunuitactive font-family Arial Helvetica sans-seriffont-size 12pxfont-style normalfont-weight normalcolor 09005Dtext-decoration none

txtbleunuitsmallitalicAtxtbleunuitsmallitalic

font-family Arial Helvetica sans-seriffont-size 10pxfont-style italicfont-weight normalcolor 09005Dtext-decoration none

txtmauveptit font-family Arial Helvetica sans-serif font-size 11px font-style normal font-weight normal color 9696D2 text-decoration none

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 28: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2844

Balise ltCadregtCette balise active lrsquoencadrement de lrsquoaffichage associeacute aux champs qursquoelle contient

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

BorderEpaisseur du cadre en pixelsDeacutefaut Lrsquoattribut laquo Border raquo de la balise ltDocumentXMLgt Syntaxe

Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

BorderFormEpaisseur du cadre dans le cas du formulaire (en pixels)Deacutefaut Lrsquoattribut laquo BorderForm raquo de la balise en cours

puis lrsquoattribut laquo BorderForm raquo de la balise ltDocumentXMLgtpuis lrsquoattribut laquo Border raquo de la balise en cours

Syntaxe Border=Primen Prime avec n en pixelsSi n=0 alors il nrsquoy aura pas de cadre visible

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 29: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 2944

Exemple de balise ltCadregt

ltCadre Titre=Le projet Border=1 Traitement=NoAffgt

ltChamp1gthellipltChamp1gtltChamp2gthellipltChamp2gtltChamp3gthellipltChamp3gt

ltCadregt

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 30: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3044

Balise ltTitregtCette balise affiche un titre

Attributs

TitreIdentifie le texte agrave afficher pour introduire les champs contenus dans cette baliseSyntaxe Titre=PrimeTexte agrave afficher Prime

Html_TitreCode html agrave afficher avant le titreDeacutefaut Lrsquoattribut laquo Html_Titre raquo de la balise ltDocumentXMLgt Syntaxe Html_Titre=Primecode html Prime

Les caractegraveres lsquoltrsquo et lsquogtrsquo doivent ecirctre remplaceacutes par le caractegravere lsquosectrsquo

Class_TitreStyle agrave utiliser pour lrsquoaffichage du titreDeacutefaut Lrsquoattribut laquo Class_Titre raquo de la balise ltDocumentXMLgt Syntaxe Class_Titre=Primeclasse deacutefinie dans une feuille de style Prime

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes sans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur

Les indicateurs possibles sont NoAffInForm Ne pas afficher le titre dans le formulaireNoAff Ne pas afficher le titre dans la fiche

Exemple de balise ltTitregt

ltTitre Titre=Le projet Html_Titre=sectHR SIZE=rsquo1rsquo WIDTH=rsquo80rsquo sect Traitement=NoAffgt

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 31: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3144

Balise ltnom_champgtCette balise dont le nom est libre introduit les paramegravetres de traitement drsquoun champ (attributs)

Attributs communs agrave tous les types de champs

LabelLibelleacute du champSyntaxe Label=PrimeLibelleacute Prime

AlignLabelsAlignement par deacutefaut agrave utiliser pour le libelleacute du champDeacutefaut Lrsquoattribut laquo AlignLabels raquo de la balise ltDocumentXMLgt sinon laquo agrave droite raquoSyntaxe AlignLabels=PrimeLeft Prime

AlignLabels=PrimeRight Prime

FormatType de preacutesentation du champ dans le cas de lrsquoaffichage de la ficheDeacutefaut Lrsquoattribut laquo Format raquo de la balise ltDocumentXMLgt Syntaxe

Format=Horizontal Le libelleacute du champ et sa valeur sont sur la mecircme ligneFormat=Vertical Le libelleacute du champ est sur une ligne la valeur est sur une autre ligne

FormatFormType de preacutesentation du champ dans le cas de lrsquoaffichage du formulaireDeacutefaut Lrsquoattribut laquo FormatForm raquo de la balise ltDocumentXMLgt

puis lrsquoattribut laquo Format raquo de la balise en coursSyntaxe

FormatForm=Horizontal Le libelleacute du champ sa valeur et le commentaire associeacute sontsur la mecircme ligne (cf tableau html)

FormatForm=Vertical Le libelleacute du champ et le commentaire associeacute sont sur uneligne la valeur est sur une autre ligne

Class_LabelStyle agrave utiliser pour lrsquoaffichage du libelleacute du champDeacutefaut Lrsquoattribut laquo Class_Label raquo de la balise ltDocumentXMLgt Syntaxe Class_Label=Primeclasse deacutefinie dans une feuille de style Prime

Class_ValeurStyle agrave utiliser pour lrsquoaffichage de la valeur du champDeacutefaut Lrsquoattribut laquo Class_Valeurraquo de la balise ltDocumentXMLgt Syntaxe Class_Valeur=Primeclasse deacutefinie dans une feuille de style Prime

Class_Valeur_FormStyle agrave utiliser pour lrsquoaffichage de la valeur du champ dans le formulaireDeacutefaut Lrsquoattribut laquo Class_Valeur_Form raquo de la balise ltDocumentXMLgt

puis lrsquoattribut Class_Valeur de la balise en coursSyntaxe Class_Valeur_Form=Primeclasse deacutefinie dans une feuille de style Prime

Class_CmtStyle agrave utiliser pour lrsquoaffichage du commentaire associeacute agrave la saisie du champ

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 32: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3244

Syntaxe Class_Cmt=Primeclasse deacutefinie dans une feuille de style Prime

TypeInputType de dialogue pour la saisie et par voie de conseacutequence type de valeur du champDans le cas de lrsquoaffichage du formulaire un dialogue deacutependant de cet attribut sera geacuteneacutereacute pourla saisie du champDe mecircme lrsquoaffichage du champ dans une fiche deacutependra de cet attributSyntaxe

TypeInput=Texte =gt La valeur du champ est une chaicircne de caractegraveres sur 1 ligneTypeInput=Textarea =gt La valeur du champ est une chaicircne de caractegraveres sur n lignesTypeInput=Date =gt La valeur du champ est une chaicircne contenant une dateTypeInput=Select =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=SelectM =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput= Select+ =gt La valeur du champ est une chaicircne choisie parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput= SelectM+ =gt La valeur du champ est n chaicircnes choisies parmi plusieurs ou une

chaicircne speacutecifieacutee par lrsquoutilisateurTypeInput=Radio =gt La valeur du champ est une chaicircne choisie parmi plusieursTypeInput=Checkbox =gt La valeur du champ est n chaicircnes choisies parmi plusieursTypeInput=File =gt La valeur du champ est le nom drsquoun fichier agrave teacuteleacutecharger

InputObligIndicateur speacutecifiant si le renseignement du champ agrave une valeur non vide est obligatoireSi un champ obligatoire nrsquoest pas renseigneacute par lrsquoutilisateur celui-ci sera preacutevenu et le formulairene sera pas transmisDeacutefaut Champ optionnel Syntaxe InputOblig=PrimeTexte agrave afficher apregraves le libelleacute du champ Prime =gt le renseignement du champ

est alors obligatoireInputOblig=Prime Prime (espace) =gt champ obligatoire sans indicationInputOblig=PrimePrime (chaine vide) =gt champ optionnel

Exemple InputOblig=Prime Prime =gt affichage drsquoune asteacuterisque apregraves le libelleacute du champ obligatoire

TraitementIndicateurs controcirclant le traitement du cadreAttention Les indicateurs speacutecifieacutes dans lrsquoattribut laquo Traitement raquo de la balise ltDocumentXMLgt

seront aussi traiteacutesSyntaxe Traitement=indicateur_1 indicateur_2 hellip indicateur_k

Les indicateurs possibles sont NoAffInForm Ne pas afficher lentreacutee dans le formulaire (=gt input hidden)NoAff Ne pas afficher lentreacutee dans la ficheNoAffLabelInForm Ne pas afficher le libelleacute du champ dans le formulaireNoAffLabel Ne pas afficher le libelleacute du champ dans la ficheNoAffVide Ne pas afficher les lignes (vides) dun champ videInitDate Initialiser la date par deacutefaut (aaaa-mm-jj hhmmss)InitDateFr Initialiser la date par deacutefaut (jjmmaaaa)Url Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlSansNom Forcer louverture du lien associeacute dans une nouvelle fenecirctreUrlRubrique Creacuteer un lien vers une rubriqueMailTo Creacuteer un lien vers la messagerie

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 33: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3344

AddHiddenIndicateur activant la creacuteation drsquoun champ laquo cacheacute raquo (i-e non visible par lrsquoutilisateur) Ce champcacheacute et nommeacute est alors accessible par du code JavaScript (cf lrsquo attribut ltEvnt_xxxgt deacutecritesci-apregraves)Syntaxe AddHidden=nom du champ cacheacute NB La syntaxe AddHidden=1 est eacutequivallente agrave AddHidden=nom du champ XMLExemple AddHidden=NbSacs

oultNbSacsgt helliphelliphelliphellip AddHidden=1 helliphelliphelliphellipltNbSacsgt

Evnt_ltevent_jsgtEvegravenement JavaScript agrave inclure dans la balise html ltINPUTgt geacuteneacutereacute pour ce champSyntaxe Code JavaScript laquo event_js raquo est un eacuteveacutenement JavaScript de la balise html ltINPUTgtExemple Evnt_onFocus=if( thisvalue ) thisvalue=rsquo1rsquo Valeur min

Evnt_onBlur=if( thisvalue || thisvaluegt10) crarr alert(lsquoNombre de sacs trop important (max=10)) crarr

thisvalue=10 return false

Utiliseacute avec lrsquoattribut laquo AddHidden=nomCacheacute raquo on trouve souvent le code suivant permettantde garder accessible la valeur du champ en cours

Evnt_onFocus=thisvalue=documentlttypeFicheXmlgtltnomCacheacutegtvalue Evnt_onBlur=documentlttypeFicheXmlgtltnomCacheacutegtvalue=thisvalue

Drsquoautre champs peuvent alors acceacuteder agrave la valeur ainsi sauvegardeacutee de mecircme cette valeur peutecirctre traiteacutee avant lrsquoenvoi du formulaire (cf attribut laquo Evnt_event_js raquo de la baliseltDocumentXMLgt )

NB Le nom du formulaire html est lttype de fiche XML gt

FiltreFiltre agrave exeacutecuter avant drsquoafficher la valeur du champSyntaxe Filtre=Prime proceacutedure_1proceacutedure_2 hellip proceacutedure_k Prime

NB Les proceacutedures doivent ecirctre deacutefinies dans le fichier de code laquo mes_fonctionsphp3 raquo

CmtCommentaire explicitant la saisie du champSyntaxe Cmt=Prime texte Prime

TypoSpipIndicateur activant lrsquoaffichage drsquoune image supportant un lien vers lrsquoaide en ligne de SpipSyntaxe TypoSpip=Prime xxx Prime

Lrsquoimage est fournie par le fichier laquo iconesaidexxxgif raquo Le lien est afficheacute apregraves lecommentaire eacuteventuel

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 34: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3444

Attributs speacutecifiques aux champs de TypeInputTexte ou Textarea

TypeInput=PrimeTextePrime Texte sur 1 ligneTypeInput=PrimeTextareaPrime Texte sur plusieurs lignes

NB Les raccourcis Spip de mise en page sont exploitables

NbCaracteresTaille de la boite de saisie du champ (TypeInput=rsquoTextersquo ou lsquoTextarearsquo)Deacutefaut Lrsquoattribut laquo DefautNbCarsraquo de la balise ltDocumentXMLgt ou 83 si format vertical ou 60si format horizontalSyntaxe Attribut laquo SIZE raquo de la balise html ltINPUTgt

Attributs speacutecifiques aux champs de TypeInputRadio ou Checkbox

TypeInput=PrimeRadioPrime Choix drsquoune valeur parmi plusieursTypeInput=PrimeCheckboxPrime Choix drsquoune ou plusieurs valeurs

LabelsChoix possibles pour la valeur du champSyntaxe Labels=Primechoix_1choix_2 hellip choix_k Prime

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 35: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3544

Attributs speacutecifiques aux champs de TypeInputSelect ou Select+ ou SelectM ou SelectM+

TypeInput=PrimeSelectPrimeChoix drsquoune valeur parmi plusieursTypeInput=PrimeSelect+Prime Choix drsquoune valeur parmi plusieurs ou creacuteation drsquoun nouveau choix

possibleTypeInput=PrimeSelectMPrime Choix drsquoune ou de plusieurs valeursTypeInput=PrimeSelectM+Prime Choix drsquoune ou de plusieurs valeurs ou creacuteation drsquoun nouveau choix

possible

DefautTexteTexte afficheacute par deacutefaut dans la boite de seacutelectionSyntaxe DefautTexte=Primetexte Prime

TableTable Spip dont les enregistrements fourniront les choix agrave propose dans la boite de seacutelectionSyntaxe Table=Primespip_xxxxx Prime

Table=Primespip_xxxxx as yyyy PrimeExemple Table=Primespip_rubriques as rubriques Prime

ChIdNom de la cleacute primaire agrave utiliser dans la tableNB Sa valeur sera associeacutee agrave la seacutelectionSyntaxe ChId=Primenom de la cleacute primaire Prime

ChpTxtNom du champ de la table qui donnera le texte agrave afficher pour la seacutelectionSyntaxe ChTxt=Primenom du champ Prime

ChpValOptionNom du(des) champ(s) de la table qui donneront la valeur associeacutee agrave la seacutelectionNB La valeur associeacutee la seacutelection sera laquo ltvaleur de ChIdgtltvaleurs des champs ChpValOptiongt raquoSyntaxe ChValOption=Primenom_1nom_2hellip Prime

TableWhereNom de la table utiliseacutee pour lrsquoeacuteventuelle clause laquo where raquo de la requecircte SQLSyntaxe TableWhere=Primespip_xxxxx Prime

TableWhere=Primespip_xxxxx as yyyy PrimeTableWhere=Primespip_xxxxx spip_yyyyy as zzzz Prime

Exemple TableWhere=Primespip_mots as mots spip_mots_rubriques as lien_mots Prime

ChpWhereEventuelle clause laquo where raquo de la requecircte SQLSyntaxe ChpWhere =Primeexpression logique SQL adhoc PrimeExemple ChpWhere=Primerubriquestitre like spip Prime

ChpClasstEventuelle clause laquo order raquo de la requecircte SQLSyntaxe ChpClasst =Primeexpression SQL adhoc Prime

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 36: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3644

Exemple ChpClasst=Primerubriquestitre rubriquesdate Prime

Exemple de balise avec TypeInput=PrimeSelectPrime

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot spip_mots AS mots ChpWhere=rubriquesid_parent=0 AND rubriquesid_rubrique=lien_motid_rubrique AND crarr lien_motid_mot=motsid_mot AND motstitre=Partenaire AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

Affichage du champ laquo Partenaires raquo dans le formulaire

Affichage du champ laquo Partenaires raquo dans la fiche

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 37: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3744

Annexe 2 - Exemple de FICHE XML complegraveteDescription drsquoun projet de solidariteacute

( cf httpjuniorsolidariteorg )

A titre drsquoexemple nous deacutecrirons ici la fiche descriptive drsquoun projet de solidariteacute geacutereacute par le sitelaquo httpjuniorsolidariteorg raquo site entiegraverement construit avec Spip

La description de chaque champ dans le modegravele estlisteacutee accompagneacutee drsquoune vue du champ dans leformulaire de creacuteationmodification drsquoune fichelaquo Projet raquo ainsi que drsquoune vue du champ tel qursquoil sepreacutesente lors de lrsquoaffichage drsquoune fiche

NB Le modegravele de fiche deacutecrit ci-dessous est livreacute agravetitre drsquoexemple dans la distribution du package laquo SPIP-XML raquo

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 38: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3844

Modegravele de fiche laquo Projet raquo - Fiche et formulaire associeacutes

ltDocumentXML TypeDocXML=ModeleFicheProjet Handler=ModeleFicheXML Evnt_onSubmit=if(thisNomRubriquevalue || crarr thisNomRubriquevaluesubstring(05)==Nom d)crarr alert(Nom du projet absent)return false Class_Titre=h3Spip FormatForm=Vertical Format=Horizontal AlignLabels=left Traitement=NoAffVide Class_Label=txtmauveptit Class_Valeur=txtbleunuit Class_Valeur_Form=txtbleunuit Class_Cmt=txtbleunuitsmallitalic DefautNbCars=40 Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sectsectBR sect Border=0 Width=100gt

ltTitre_1_ Titre=Le projet Traitement=NoAff gt

ltNomRubrique Label=Nom du projet Traitement=NoAff InputOblig= TypeInput=Texte AddHidden=1 Filtre=supprimer_numero Evnt_onFocus= crarr if(thisvalue || thisvaluesubstring(05)==Nom d) crarr thisvalue= Evnt_onBlur=crarr documentFicheProjetNomRubriquevalue=thisvalue gtltNomRubriquegt

ltCourteDescription Label=Courte description du projet Traitement=NoAff InputOblig= TypeInput=TextArea TypoSpip=Mauve Cmt=Pour le caracteacuteriser dans les listes de projets gtltCourteDescriptiongt

ltTitre_2_ Titre=Objectifs Traitement=NoAffInForm Html_Titre=sectIMG SRC=imagesfiletmauvegif crarr WIDTH=100 HEIGHT=9sectsectBR sect gt

ltObjectifsProjet Label=Objectifs du projet Traitement=NoAffLabel InputOblig= TypeInput=TextArea TypoSpip=Mauve gtltObjectifsProjetgt

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 39: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 3944

ltTitre_3_ Titre=Activiteacutes Traitement=NoAffInForm gt

ltActivitesProjet Label=Activiteacutes envisageacutees Traitement=NoAffLabel InputOblig= TypeInput=TextArea Format=Vertical TypoSpip=Mauve Class_Valeur=txtbleunuit gtltActivitesProjetgt

ltTitre_4_ Titre=Proposeacute par Traitement=NoAffInForm gt

ltPartenaires Label=Proposeacuteampampnbsppar Traitement=NoAffLabelUrlRubrique InputOblig= TypeInput=SelectM AlignLabels=left DefautTexte=Seacutelectionnez les partenaires Table=spip_rubriques AS rubriques ChpId=rubriquesid_rubrique ChpTxt=rubriquestitre ChpValOption=rubriquestitre TableWhere=spip_mots_rubriques AS lien_mot crarr spip_mots AS mots ChpWhere=rubriquesid_parent=0 crarr AND rubriquesid_rubrique=lien_motid_rubrique crarr AND lien_motid_mot=motsid_mot crarr AND motstitre=Partenaire crarr AND rubriquesstatut=publie FiltreApresImport=liensProjetPartenaires gtltPartenairesgt

ltSiteWebProjet Label=Preacutesentation deacutetailleacutee du projet Format=Vertical InputOblig= TypeInput=Texte FiltreFromInput=verifUrl Traitement=UrlSansNom Evnt_onFocus=if(thisvaluesubstring(03)==) crarr thisvalue=http gt ougrave trouver des informations compleacutementaires ltSiteWebProjetgt

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 40: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 4044

ltTitre_5_ Titre=Contact gt

ltNomContact Label=Nom Traitement=NoAffLabel InputOblig= TypeInput=Texte Evnt_onFocus=thisvalue= gtPreacutenom Nom ltNomContactgt

ltFonctionContact Label=Fonction Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltFonctionContactgt

ltEmailContact Label=Email Traitement=NoAffLabelMailTo InputOblig= TypeInput=Texte gtltEmailContactgt

ltTelContact Label=NsectSUPsectossectSUPsect teacutelfax Traitement=NoAffLabel InputOblig= TypeInput=Texte gtltTelContactgt

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 41: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 4144

ltTitre_6_ Titre=Indexation (mots-cleacutes) Traitement=NoAff gt ltVsObjectifs Label=Objectifs InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_objectifs ChpId=id_index_objectif ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsObjectifsgt

ltVsActivites Label=Activiteacutes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_activites ChpId=id_index_activite ChpTxt=titre ChpValOption=titre ChpClasst=classt Traitement=NoAff gtltVsActivitesgt

ltVsClasses Label=Classes InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_classes ChpId=id_index_classe ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsClassesgt

ltVsPopulation Label=Population viseacutee InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_populations ChpId=id_index_population ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPopulationgt

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 42: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 4244

Table MySQL laquo spip_appli_index_champgeos raquo (le preacutefixe des tables Spip est laquo cc raquo)

ltVsPortee Label=Champ geacuteographique InputOblig= AlignLabels=left TypeInput=SelectM DefautTexte=autre Table=spip_appli_index_champgeos ChpId=id_index_champgeo ChpTxt=titre ChpValOption=titre Traitement=NoAff gtltVsPorteegt

ltTitre_99_ Html_Titre=sectBR sectsectIMG crarr SRC=imagesfiletmauvegif WIDTH=100 crarr HEIGHT=9sect sectBR sect sect=$lienAvApsect gt

ltDocumentXMLgt

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 43: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 4344

Squelette laquo rubriquehtml raquo Affichage des paramegravetres drsquoindexation du projet dans un calque seacutepareacute

lt-------------------------- INDEXATION PROJET -------------------------gtlt Afficher les paramegravetres de classement des projets if($Entite==Projet) gt [(TEXTE|affIndexation)]lt Fin if($Entite==Projet)

Filtre laquo affIndexation raquo Affichage des paramegravetres drsquoindexation du projet

function affIndexation($data)

global $attributsModele Renseigneacute par lrsquoutilisation du filtre laquo processXML raquo

Reacutecupeacuterer les valeurs des balises Xml de la fiche $valeursFiche = balisesXML($data) foreach($valeursFiche as $index=gt$value)

Ne traiter que les balises Vs non vides if(strpos(_$indexVs)=1 || $value) continue $outData = lttd bgcolor=DDDDF9 class=txtbreves width=180gt ltspan class=txtbrevesboldgt $attributsModele[$index][Label] ltspangtltbr gt ltsmallgtrsquo $values = explode( $value) foreach($values as $value) if ($value) $outData = noNumero($value)ltbrgt

$outData = ltsmallgt lttdgt Fin foreach($valeursFiche as $index=gt$value) return $outData

Fin function affIndexation($data)

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc
Page 44: Traitement de FICHES XML dans une application construite sur SPIP · 2008. 10. 1. · SPIP-XML.doc 4/44 2. Utilisation des « Fiches XML » 2.1. Intégration à SPIP : le filtre «

SPIP-XMLdoc 4444

Contenu de la fiche laquo Projet raquo utiliseacutee pour les images ci-dessus

ltDocumentXML TypeDocXML=FicheProjet Handler=FicheXMLgt

ltNomRubriquegtCahiers - CrayonsltNomRubriquegt

ltCourteDescriptiongtOpeacuteration peacutedagogique et humanitaire de collecte de fonds pour offrir agrave une eacutecole du Sud-Est asiatique dumateacuteriel scolairesectNLsectltCourteDescriptiongt

ltObjectifsProjetgtMobiliser les eacutelegraveves pour quils reacutecoltent une somme drsquoargent si modeste soit-elle qursquoils enverront agrave une eacutecoledu Cambodge de Thaiumllande du Vietnam des Philippines ou du LaoshellipsectNLsectsectNLsectCrsquoest pour les eacutecoliers loccasion de deacutecouvrir cette vaste reacutegion de notre planegravete et de mieux connaicirctre des modes devie totalement diffeacuterents du leur sectNLsectsectNLsectTous srsquoinstruisent comprennent mieux ce monde ndash qui leur appartiendra- drsquoautres reacutealisent simplement la chanceqursquoils ont de pouvoir suivre reacuteguliegraverement des cours dans une laquo vraie raquo eacutecolehellipsectNLsectsectNLsectIls restent ensuite souvent en contact avec leurs nouveaux amis par des envois de lettres de photos de leur reacutegion ou desimples dessins Et les petits cambodgiens vietnamiens thaiumllandais laotiens ou philippins eacuteprouveront la mecircme joie agrave deacutecouvrircet eacutetrange univers qursquoest pour eux lrsquoEuropeltObjectifsProjetgt

ltActivitesProjetgtServices rendus fabrication et vente drsquoobjets eacuteconomies reacutealiseacutees sur leur argent de poche tous les moyenssont utiliseacutes pour reacuteunir la somme avec laquelle leurs petits camarades drsquoAsie pourront acheter les fameux cahiers et crayonssectNLsectsectNLsectComment organiser une Opeacuteration Cahiers-Crayons Comment se deacuteroule-t-elle sectNLsect- La dureacutee deux mois environ entre preacuteparation et reacutealisationsectNLsect- Lrsquoanimation preacutesentation drsquoun projet par un repreacutesentant de lrsquoAssociation projection drsquoun diaporama ou drsquoundocumentaire videacuteosectNLsect- Les moyens fourniture de documentation par lrsquoAssociation revues affiches tracts guide du parrainagehellipsectNLsect- Le deacuteroulement motivation des enfants avec lrsquoaide de leurs professeurs Mise en place de lrsquoopeacuteration agrave reacutealisersectNLsect- Quelques temps apregraves lrsquoopeacuteration les enfants recevront des remerciements venant directement desbeacuteneacuteficiairesltActivitesProjetgt

ltPartenairesgt48Enfants du MeacutekongltPartenairesgt

ltSiteWebProjetgthttpwwwenfantsdumekongcomsiteevtoc000001htmltSiteWebProjetgt

ltNomContactgt ltNomContactgt

ltFonctionContactgtltFonctionContactgt

ltEmailContactgt enfantsdumekongcomltEmailContactgt

ltTelContactgtTeacutel - Fax ltTelContactgt

ltVsObjectifsgt1La scolarisation lalphabeacutetisation9Le deacuteveloppementltVsObjectifsgt

ltVsActivitesgt9Collecter des fonds2Informer3Monter un spectacle7ParrainerltVsActivitesgt

ltVsClassesgt1CP et CE2CM36egraveme et 5egraveme44egraveme et 3egraveme5LyceacuteeltVsClassesgt

ltVsPopulationgt1EnfantsltVsPopulationgt

ltVsPorteegt3InternationalltVsPorteegt

lteditDategt2003-06-12 193941lteditDategtltuserNamegtNathalieltuserNamegtltuserEmailgtnathalienavarrojuniorsolidariteorgltuserEmailgt

ltDocumentXMLgt

  • Objectifs
  • Utilisation des laquo Fiches XML raquo
    • Inteacutegration agrave SPIP le filtre laquo processXML raquo
    • Utilisation du filtre laquo processXML raquo par lrsquoapp
    • Les paramegravetres drsquoenvironnement du filtre laquo proc
    • Lrsquoimportation drsquoune laquo Fiche XML raquo dans Spip
      • Principes de traitement des laquo Fiches XML raquo
        • Le type dune FICHE XML
        • Le traitement drsquoune FICHE XML Modegravele et laquo pa
        • Le contenu dun modegravele de FICHE XML
        • Le traitement drsquoune FICHE XML les laquo parsers
          • La distribution laquo SPIP ndash XML raquo
            • Les composants
              • Les fichiers drsquoinstallation
              • Les squelettes de lrsquoexemple laquo Devis raquo
              • Le filtre laquo processXML raquo et le traitement des
                • La mise en œuvre de lrsquoinstallation Installer l
                • La mise en œuvre de lrsquoinstallation Mettre agrave jo
                • La mise en œuvre de lrsquoinstallation Activer lrsquoe
                  • Annexe 1 ndash Modegravele de FICHE XML Syntaxe des
                    • Balise ltDocumentXMLgt
                    • Balise ltCadregt
                    • Balise ltTitregt
                    • Balise ltnom_champgt
                      • Annexe 2 - Exemple de FICHE XML complegraveteDesc