DOCUMENTATION SUR LE GESTIONNAIRE D'ARBRES : classeTree.php

AUTEUR : FRANCK OBERLECHNER, Ingénieur Système et Réseaux


 

SOMMAIRE

1. Préambule

2. Installation de la classe

3. Déclaration d'un arbre

4. La fusion en un seul arbre des dossiers et des fichiers

5. L'arbre Calendrier

6. ANNEXES

 


1) PREAMBULE

La classe ClasseTree.php permet de déclarer des arbres hiérarchique à partir de listes "père-fils" sans aucune gestion de code javascript. Il est possible de fusionner

 


2) INSTALLATION

Définir un répertoire "include_path" en modifiant le fichier de configuration de PHP %SYSTEMROOT%\PHP.INI sous IIS

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
include_path = "d:/wwwroot/rubappli/communs"

Décompresser dans le répertoire "include_path" du serveur PHP le fichier classeTree.php et le répertoire classeForms (ce répertoire contient toutes les ressources nécessaires à la classe)
On obtient l'arborescence :

    .../Répertoire_Include

    _classePath.php
    classeTree.php
    classeTree<dir>

Editer le fichier _classePath.php et modifier la ligne DEFINE en terminant par un "/" obligatoirement, la constante INCLUDEPATH doit pointer sur le répertoire ou se situe le fichier classeTree.php et _classePath.php

    // PARAMETRAGE :
    DEFINE('INCLUDEPATH','/rubappli/communs/');

ATTENTION pour que toutes les pages de votre site fonctionnent, définir de préférence un chemin absolu ( commencant par un / et donnant le chemin complet depuis la racine du site )

C'est tout ! la classe est maintenant exploitable directement

 

ATTENTION : L'INSTALLATION COMPLETE EST NECESSAIRE POUR TESTER LES EXEMPLES QUI SUIVENT


3) DECLARATION D'UN ARBRE

On ne peut déclarer plusieurs Arbres par pages

Syntaxe :

<?php

balise de début de code PHP,

ATTENTION LE CODE QUI SUIT DOIT PRECEDER LA BALISE <HTML>

include('classeTree.php');

appel au code de la classe
$t = New Tree; création d'un nouvel objet "arbre" $t
$t->tree_init();

Iinitialisation de l'objet $t


$t->tree_javascript(); insertion du code javascript nécessaire à la gestion d'un ou plusieurs arbres

$f->tree_new("TREE_1", array(

"default" => "5",
"useLines" => "true",
"closeSameLevel" => "false",
"expander" => "true",
"useStatusText" => "true",
"useIcons" => "true",
"target" => "blank",
),

$tableaunoeuds);

création de l'objet avec ses paramètres
$f->tree_show("TREE_1",false); Insertion de l'objet dans le code HTML
1) "TREE_1" est optionnel
2) true / false = déployer tout l'arbre ou pas ( false par défaut )
$f->tree_iconroot('trash.gif');
changement de l'icone "racine" par défaut une maison
?>  

4) LA FUSION ENTRE 2 TABLEAUX : DOSSIERS ET FICHIERS

# TABLEAU PERE / FILS
$tableaupere = array( array(0,-1,"France (0)"),

array(1,0,"Paris (1)"),
array(2,0,"Marseille (2)"),
array(3,0,"Lyon (3)"),
array(4,1,"Place de la Concorde (4)"),
array(5,1,"Montmartre (5)"),
array(6,2,"Vieux port (6)"),
array(7,2,"Notre Dame de la Garde (7)"),
array(8,3,"Place Bellecourt (8)"),
array(9,3,"La croix rousse (9)"),
array(10,1,"Invalides (10)"),
array(11,5,"Sacré Coeur (11)"),
array(12,5,"La place du tertre (12)"),
array(13,0,"Trifouilly (13)"),
array(14,13,"Place du marché (14)",'','trash.gif'),

);

$tableaufils = array(

array(100,4,"CAFE DE LA CONCORDE (100)"),
array(101,11,"CAFE DE LA BUTTE (101)"),
array(102,6,"CAFE DU VIEUX PORT (102)"),
array(103,8,"CAFE DU GUIGNOL (103)"),

);

on fusionne les 2 tableaux par la fonction :

$tableaunoeuds = $f->tree_fusion($tableaupere,$tableaufils,"sample03_fusion_pere_fils.php?ID=");

l'url est appelée quand on clique sur un élément de $tableaufils

2 options supplémentaires :

$tableaunoeuds = $f->tree_fusion($tableaupere,$tableaufils,"sample03_fusion_pere_fils.php?ID=", $erase_empty, $show_cpt);

$erase_empty : si true alors on efface les dossiers sans fichiers

$show_cpt : si true alors on affiche un compteur

par défaut : $erase_empty=false,$show_cpt=false

 

si on veut un branchement différent à chaque feuille et non pas avec une URL commune : On passe un tableau des feuilles avec un 4e paramètre l'URL particulière

$tableaufils = array(

array(100,4,"CAFE DE LA CONCORDE (100)","sample08_urldifferente_called.php?DELETE=YES"),
array(101,11,"CAFE DE LA BUTTE (101)","sample08_urldifferente_called.php?PARAM=101"),
array(102,6,"CAFE DU VIEUX PORT (102)","sample08_urldifferente_called.php?LIB=CAFE_DU_VIEUX_PORT"),
array(103,8,"CAFE DU GUIGNOL (103)","sample08_urldifferente_called.php?ID=103"),

);

et on fusionne simplement les 2 tableaux :

$tableaunoeuds = $f->tree_fusion($tableaupere,$tableaufils);

5) L'ARBRE CALENDRIER

$f = New Tree;

$f->tree_init();

$datemini = "2005-01-01";
$datemaxi = "2007-08-01";

$tableaunoeuds1 = $f->tree_chrono($datemini,$datemaxi,"sample05_chronologique.php","Titre de l'arbre");

$f->tree_javascript();
$f->tree_new("TREE_1", array(

"default" => "",
"useLines" => "true",
"closeSameLevel" => "true",
"expander" => "true",
"useIcons" => "true",
"useCookies" => "true",
),

$tableaunoeuds1);


$f->tree_show();

En fournissant 2 dates à la fonction tree_chrono, un arbre est généré dynamiquement avec un branchement à une URL définie et avec 3 paramètres :

YEAR=2005

MONTH=09

MONTHLIB=Septembre

Le mois courant est repéré en gras

 

 


6) ANNEXES

    6.1) Exemples de codes

    sample01_1tree.php initialisation d'un arbre simple
    sample02_4trees.php affichage de 4 arbres avec des paramètres différents
    sample03_fusion_pere_fils.php fusion entre 2 arbres ( 1 arbre "noeud" ou "dossier" et un arbre "feuille" ou fichier
    sample04_fusion_pere_fils_filtree.php idem exemple précédant en effaçant les noeuds sans "feuilles"
    sample05_chronologique.php affichage rapide d'un arbre "calendrier" pour afficher
    sample06_iconeroot.php  
    sample07_defaulturl.php initialisation d'un arbre simple avec branchement à une URL par défaut
    sample08_urldifferente.php branchement à des URL différentes et non avec une url commune et un paramètre différent