AutoClass XML

De Wiki.

Sommaire

Classe

<?xml version="1.0" encoding="ISO-8859-1" ?>
<class name="evenement" libelle="évènements" prefix="evenement" display="titre" abstract="descriptif">

option classe liées de lien

<class name="pdfmesureponctuelle" prefix="pms" display="titre" abstract="fichier" option="link">

option d'héritage de classe

 <class name="classe_héritante" prefix="pre" display="titre" abstract="sous-titre" inherits_from="classe_héritée">

//option mail qui permet de faire un dédoublonnage sur ce champs lors de l'import

<item name="mail" type="varchar" length="255" list="true" order="true" option="email" />


<item name="id" type="int" length="11" isprimary="true" notnull="true" default="-1" list="false" />
<item name="titre" libelle="titre" type="varchar" length="255" list="true" order="true" />
<item name="date" libelle="date" type="date" list="true" order="true" />
<item name="descriptif" libelle="descriptif" type="varchar" length="1024" list="true" order="true" />
<item name="lien" libelle="lien" type="varchar" length="255" list="true" order="true" />
encoding=utf8
nohtml="true"



unique="true" (default : false - sauf cas option=email ou default : true)
oblig="true"

group="savoirplus"

option="password"
additem="false" // autorise l'ajout d'item dans la rubrique associations
/>

Types simples

// textarea

<item name="Descriptif" type="varchar" length="1024" list="false" order="true" option="textarea"/>

// xml

<item name="Descriptif" type="varchar" length="1024" list="false" order="true" option="xml"/>

Similaire au texterea, mais en page de visu, le code est affiché, non rendu.

// bool

<item name="affiche" libelle="affiche" type="int" length="2" list="true" order="true" option="bool" />

// affichage conditionné

<item name="medthodes" libelle="Méthodes" type="varchar" length="255" list="false" order="true" option="link" displayif="consultmedthodes" />

// table pointée par une asso

<item name="id" type="int" length="11" isprimary="true" notnull="true" default="-1" list="true" asso="emploi_destinataire" />


// rss

<item name="titre" type="varchar" length="255" list="true" order="true" rss="title" />

//link

<item name="lien" libelle="lien" type="int" type="varchar" length="255" list="true" order="true" option="link" >
<option type="link" libelle="Consulter les réglementations" ispopup="0" width="" height="" />

ou

<option type="link" libelle="" itemlibelle="titrepdf" ispopup="0" width="" height="" />
</item>

on veut associer un produit à un noeud de l'arborescence

on peut ajouter un conditionnement identique à celui des foreign kys

<option type="where" item="id_site" value="1" />



//email option="email"

Dates

<item name="date" libelle="date" type="timestamp" list="true" order="true" rss="pubDate" />

Valeurs possibles : date, datetime, timestamp

File et image

option file et sub option image

les attributs width et height forcent un redimensionnement strict aux tailles mentionnés (pas de respect des proportions).

<item name="photo" libelle="photo" type="varchar" length="255" list="false" order="true" option="file">
<option type="image" width="120" height="100" />
</item>

les attributs maxwidth et maxheight forcent un redimensionnement homothétique.

<item name="photo" libelle="photo" type="varchar" length="255" list="false" order="true" option="file">
<option type="image" maxwidth="120" maxheight="100" />
</item>
<item name="photo" libelle="photo" type="varchar" length="255" list="false" order="true" option="file">
<option type="pdf" width="" height="" />
</item>

Enumération

// option enum

<item name="type" type="int" length="2" list="true" order="true" option="enum">
<option type="value" value="0" libelle="prévu" />
<option type="value" value="1" libelle="constaté" />
</item>

Statut

// statut

<item name="statut" libelle="statut" type="int" length="11" notnull="true" default="DEF_CODE_STATUT_DEFAUT" list="true" />

// statut custom

<item name="statut" libelle="Statut" type="int" length="11" notnull="true" default="DEF_CODE_STATUT_DEFAUT" list="true" >
<option type="value" value="1" libelle="en attente" />
<option type="value" value="4" libelle="répondue" />
<option type="value" value="5" libelle="écartée" />
</item>

Si on souhaite utiliser un champ statut autre que statut, on doit le pré-déclarer dans les attributs de la balise class.

 statut="id_statut"

Par exemple, ce cas est présent dans la classe shp_commande dont les statuts sont alimentés par une fkey.

Nœud d'arborescence

imposer node comme nom ou différent d'un nom de table type "cms"

<item name="node" libelle="Noeud de l'arborescence associé" type="int" length="11" list="true" order="true" option="node"/>

on veut associer un produit à un noeud de l'arborescence

on peut ajouter un conditionnement identique à celui des foreign kys

<option type="where" item="id_site" value="1" />

Ordre par défaut

Ajouter les attributs def_order_field et def_order_direction permet d'avoir un tri par défault lors d'affichages d'enregistrement de la table sous forme de liste, par exemple dans le cas de liaisons ou associations...

<class name="evenement" libelle="évènements" prefix="evenement" display="titre" abstract="descriptif" def_order_field="ordre" def_order_direction="ASC">

Un champ ordre peut être ajouté pour permettre de fixer un ordre custom aux enregistrements de la table

<item name="ordre" libelle="ordre" type="int" length="11" notnull="true" default="0" list="true" order="true" />

Foreign key

// fkey simple

<item name="ref" type="int" length="11" list="true" order="true" fkey="reference" additem="false"/>

// fkey avec where clause

<item name="polluant" type="int" length="11" list="true" order="true" fkey="polluant">
<option type="where" item="alerte" value="1" />
</item>

// fkey avec where clause sur plusieurs values

<item name="polluant" type="int" length="11" list="true" order="true" fkey="polluant">
<option type="where" item="alerte" value="1,2,3" />
</item>

// fkey avec spec custom des statuts

<item name="polluant" type="int" length="11" list="true" order="true" fkey="polluant">
<option type="statut" value="*" />

ou

<option type="statut" value="4" />
<option type="statut" value="1,2" />
</item>

// fkey avec where clause // session récupère la VALUE passée par SESSION // default compare la value à DEFAULT // fkey = association // exemple latecoere

<item name=\"lieu\" libelle=\"site\" type=\"int\" default=\"0\" order=\"true\" fkey=\"lieu\" >
<option type=\"where\" item=\"groupe\" value=\"groupe\" option=\"session\" fkey=\"site\" default=\"DEF_ID_ADMIN_DEFAUT\" />
</item>


// fkey permutable : fkey_switch

<item name="type_reference" libelle="Type de liaison" type="enum" length="'page','mod_news','mod_survey'" notnull="true" default="page" list="true" />
<item name="id_reference" libelle="Id du type de liaison associé" fkey_switch="type_reference" type="int" length="11" list="true" order="true">
    <option type="page" table="cms_page" />
    <option type="mod_news" table="cms_news" />
    <option type="mod_survey" table="cms_survey_ask" />
</item>

Associations

// cas table d'asso is_asso="true"

// ne pas afficher les bouton "additem" ou "edit" additem="false"

<class name="emploi_destinataire" is_asso="true" prefix="ed" display="offre" abstract="destinataire">

// table ayant une ou plusieurs associations asso, asso_view ou asso_edit

<item name="id" type="int" length="11" isprimary="true" notnull="true" default="-1" list="true" asso="assoactaffichage,assoactiviteacttheme,assoactiviteactage">

Traductions

// Cas des traductions par valeur // Le champ en question doit être de type int(11) (c'est en fait une fkey)

<item name="titre_court" libelle="Titre court" type="int" length="11" notnull="true" default="0" translate="reference" />

// Cas des traductions par valeur (le champ et la table des traductions sont désynchronisés) // Ce fonctionnement est peu recommandé car il nécessite la maintenance de la table courante ET de la table des chaînes traduites (avec les possibilités d'erreurs humaines et de complexité d'intervention manuelle que cela implique...) // En revanche il permet une lecture plus compréhensible des données de la table courante hors back-office (on est face à des chaînes et non des fkeys)

<item name="titre_court" libelle="Titre court" type="varchar" length="256" notnull="true" default="" translate="value" />

// Cas des fkeys contenant le champs Cms_site // Ci-dessous, ex : on affiche tous les noeuds, tous mini site confondus

<item name="arbo_pages" libelle="Arbo Node contenant les objets" type="int" default="0" order="true" list="true" fkey="cms_arbo_pages" is_translate="true" />

Anonymous

// Permet de rendre certains champs anonymes en back-office (sauf pour le compte admin 'ccitron').

// Le fonctionnement est conditionné par un premier champ de type ENUM('Y','N') permettant d'activer le mode 'anonymous' pour d'autres champs.

// Ce champ est généralement piloté depuis le front-office par l'internaute.

<item name="trigger_anonymous" libelle="Anonyme" type="enum" length="'Y','N'" notnull="true" default="N" noedit="true" />

// Chaque champ de la table peut ensuite être rendu anonyme au moyen du parametre 'anonymous' qui déclare pour valeur le nom du champ activant le mode 'anonymous'.

<item name="email" libelle="Email" type="varchar" length="128" notnull="true" default="" list="true" order="true" nohtml="true" anonymous="trigger_anonymous" />

Geomapping

option="geocoords" /			(coordonnées GPS décimales sous forme de chaine - 'latitude, longitude')
option="geomapfile" /			(fichier statique généré par GoogleMaps)
option="geomapurl" /			(url pour la génération à la volée d'une carte par GoogleMaps)
option="geomapcenter" /			(pivot central d'une GoogleMap)
option="geomapscale" /			(échelle associée au pivot central pour définir une GoogleMap)
option="geomapin" /			(point d'entrée d'une GoogleMap - avec contrôle JS de position par rapport au point de sortie)
option="geomapout" /			(point de sortie d'une GoogleMap - avec contrôle JS de position par rapport au point d'entrée)
option="geopath" /			(série de points sur une GoogleMap définissant un itinéraire - associé ou non à un point geocoords pour centrer la carte)
geomapsize="600x400" /			(taille de l'image de la GoogleMaps
geomaptype="terrain" /			(type de la GoogleMap - {roadmap, satellite, terrain, hybrid}
geoparent="{name_of_parent_node}" /	(liaison en chaine de coordonnées GPS - type 'geocoords' - sans contrôle JS de position)

option="binder" fkey="cms_binder"/> 
option="diaporama" fkey="cms_diaporama"/>

Conditionnement interne

//champs conditionné par un autre

<item name="heure" libelle="heure" type="varchar" length="255" list="true" order="true">
<option type="if" item="type" value="0" />
</item>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<class name="lettre" prefix="let" display="titre" abstract="texte">
<item name="id" type="int" length="11" isprimary="true" notnull="true" default="-1" list="false" />
<item name="titre" libelle="titre" type="varchar" length="255" list="true" order="true" />
<item name="texte" libelle="texte" type="varchar" length="255" list="true" option="textarea"/>
<item name="langue" libelle="langue" type="int" length="11" notnull="true" default="-1" list="true" order="true" fkey="langue" />
<item name="positif" libelle="réponse positive ou négative" type="int" length="11" notnull="true" default="-1" list="true" order="true" option="bool" />
<item name="datecrea" libelle="date de création" type="date" list="true" order="true" />
<item name="statut" libelle="statut" type="int" length="11" notnull="true" default="DEF_CODE_STATUT_DEFAUT" list="true" />
</class>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<class name="reponse" prefix="rep" display="candidature" abstract="lettre">
<item name="id" type="int" length="11" isprimary="true" notnull="true" default="-1" list="false" />
<item name="candidature" libelle="candidature" type="varchar" length="255" list="true" order="true" fkey="candidature" />
<item name="lettre" libelle="réponse" type="varchar" length="255" list="true" order="true" fkey="lettre" />
<item name="datecrea" libelle="date de création" type="date" list="true" order="true" />
</class>


<item name="afficheimg" libelle="affichage du logo" type="int" length="11" list="true" order="false" option="bool" displayif="img"/>
<item name="img" libelle="logo" type="varchar" length="255" list="true" order="false" option="filedir" displayif="afficheimg">
<option type="image" width="" height="" />
<option type="if" item="type" value="1" />
</item>

Cloisonnement et Restrictions

// restrict : cloisonne les enregistrements pour les administrateurs qui les ont créés

// S'active sur un item de type fkey liant vers la table bo_users

// Peut prendre 2 valeurs : 'strict' (seuls les enregistrements liés au bo_users) ou 'loose' (enregistrements orphelins aussi)

<item name="bo_users" libelle="Adminitrateur" type="int" length="11" list="false" order="false" fkey="bo_users" restrict="loose"/>

// pattern : vérifie que le champ contient les caractères du pattern

<item name="titre" libelle="titre" type="varchar" length="255" list="true" order="true" rss="title" nohtml="true" pattern="[a-z0-9]"/>

// maxlength, détermine une longueur max pour le lien

<item name="lien" libelle="lien" type="varchar" length="255" list="true" order="false" option="link" nohtml="true" rss="link" maxlength="70"/>

Paramétrage pour export RSS

rsshtml // permet de définir si la description du rss est basé sur un tempalte html à appeler: foshow_[NomdelaClasse].rss.html

<item name="descriptif" libelle="descriptif" type="varchar" length="512" list="false" order="false" option="textarea"  rss="description" rsshtml="true"/>
// champs de mappage du RSS : 
$RSS['title'] = "";
$RSS['pubDate'] = "";
$RSS['description'] = "";
$RSS['link'] = "";
$RSS['image'] = "";
$RSS['frenchdate'] = "";
$RSS['frenchenddate'] = "";
$RSS['type'] = "";
$RSS['texte'] = "";
$RSS['site'] = "";
$RSS['enclosure'] = "";
$RSS['pubendDate'] = ""; //s'il existe une date de fin de publication, on n'affiche pas l'info

En cas d'URL custom pour la partie "LINK" du flux RSS, il suffit de le préciser dans l'entête de la classe avec l'attribut "rss_link" comme ceci :

<class name="dbf_actu" libelle="Actualités" prefix="dbf" display="title" abstract="texte" rss_link="/content/fr/Actualites-dossiers/[[type]]/[[id]]-[[title]]/">

Les paramètres dynamiques sont entre double crochet. Le nom du champs est inscrit à l'intérieur de ces délimiteurs.

Personnalisation

Attributs à l'impact violent sur la restitution de la classe, généralement utilisé en sur-charge pour désactiver ou brider des champs.

Désactiver purement et simplement un champs (en visu et édition)

skip="true"


Brider l'édition seule, la valeur reste affiché mais bridée

noedit="true"


Brider l'export seul, la valeur reste affiché mais non exportée (sid : seulement Excel XLSX à ce jour)

noexport="true"


Brider l'utilisation du champs dans les outils de recherche automatisés

nosearch="true"


Brider la liaison vers l'élément lié lors de l'affichage d'un élément FKey dans une liste

nolink="true"


Personnaliser la longueur du tronquage automatique des textes dans une liste (en nombre de caractères)

truncate="120"

Divers

Couleur RVB, cette option permet d'avoir un aperçu de la couleur dans les page de liste et de visu, et un éditeur "color picker" en édition :

option="color"



// format date

<item name="dtdebut" libelle="Date du" type="date" list="false" order="false"  format="l j F Y"/>


//class

<item name="imagevignette" libelle="Vignette" type="varchar" length="255" notnull="true" list="false" order="false" class="vignet" option="file">


// associer un fichier du filemanager à un objet // dir correspondant au dossier contenant les fichiers

<item name="fichier" libelle="Fichier PDF" type="varchar" length="255" list="false" order="true" option="filemanager" dir="/documents/logiciel"/>



// object et objectset type manipulant des objets ou liste d'objets (syntaxe JS)

<item name="taux" libelle="Taux par tranches" type="text" length="1024" list="true" order="true" default="" oblig="true" option="objectset">
<object>{seuil:decimal,valeur:decimal} </object>
</item>

champs bd genere : text


// possibilité de mettre un lien sur une image

<item name="link" libelle="Lien web" type="varchar" length="255"  notnull="true"  list="true" order="true" option="link"  > 
<option type="image" libelle="" itemlibelle="vignette"    />
</item>



// possibilité de mettre une valeur négative dans un texarea

<item name="coeff_lru" libelle="Coefficient LRU" type="varchar" length="128" list="false" order="false" nohtml="true"  isminus="true" />


Filtres

//Possibilité de filtrer les résulats de list.php via la définition de la classe (utilisé dans Metonorme pour filtrer les articles suivant le compte utilisateur)

<class name="_className_" libelle="_libName_" prefix="_pref_" display="_display_" abstract="_abs_" filter_on="nom d'un champ de la classe" filter_value="_valeur du filtre " filter_option="_comportement étendu" filter_rank="REDACT">

Seul FILTER_ON et FILTER_VALUE sont obligatoires.

FILTER_OPTION permet de complexifier le filtrage (ne fonctionne que sur les variables de session à l'heure actuelle)

FILTER_RANK permet de spécifier pour quel type de rang utilisateur le filtre doit etre actif, si non spécifié celui-ci n'est actif que pour les REDACT

NB : fichier à modifier en cas de besoin cms-inc/autoClass/list.process.php

Champs réservés

//cms_auteur : Permet de stocker l'id de l'utilisateur du BO de façon transparente (cms-inc/autoClass/maj.saveposteditems.php ligne 15)

<item name="cms_auteur" libelle="Auteur" type="int" length="11" skip="true"/>