32,7 → 32,7 |
// pris connaissance de la licence CeCILL, et que vous en avez accepté les |
// termes. |
// ---- |
// CVS : $Id: pap_rendu.inc.php,v 1.29 2006-04-20 09:45:30 alexandre_tb Exp $ |
// CVS : $Id: pap_rendu.inc.php,v 1.30 2006-12-01 16:41:04 florian Exp $ |
/** |
* Rendu : programme traitant l'url demandée et retournant la page compressé au navigateur. |
* |
48,7 → 48,7 |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
*@author Laurent COUDOUNEAU <laurent.coudouneau@ema.fr> |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.29 $ $Date: 2006-04-20 09:45:30 $ |
*@version $Revision: 1.30 $ $Date: 2006-12-01 16:41:04 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
67,6 → 67,9 |
/** Inclusion de la bibliothèque de fonctions servant à l'insertion de scripts pour une page donnée.*/ |
include_once GEN_CHEMIN_BIBLIO.'pap_script.fonct.php'; |
|
/** Inclusion de la classe servant au rendu de Papyrus.*/ |
include_once GEN_CHEMIN_BIBLIO_CLASSE.'pap_rendu.class.php'; |
|
/** Inclusion de la bibliothèque PEAR Text_Wiki.*/ |
include_once PAP_CHEMIN_API_PEAR.'Text/Wiki.php'; |
|
124,8 → 127,6 |
// Lecture du fichier de squelette XHTML en PHP 4.3 |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] = file_get_contents($GLOBALS['_PAPYRUS_']['general']['chemin_squelette']); |
|
|
|
// +------------------------------------------------------------------------------------------------------+ |
// Recherche des informations pour la complétion de l'entête du squelette de la page demandée. |
|
156,7 → 157,7 |
$GLOBALS['_PAPYRUS_']['rendu']['SITE_CODE_ALPHA'] = $GLOBALS['_PAPYRUS_']['page']['code_alpha_site']; |
|
//Construction des infos sur le contexte d'affichage de la page |
$une_url =new Net_URL(); |
$une_url = new Net_URL(); |
$une_url->addQueryString("site",$_GEN_commun['url_site']); |
$une_url->removeQueryString("langue"); |
$GLOBALS['_PAPYRUS_']['rendu']['PAGE_URL'] = $une_url->getUrl(); |
300,28 → 301,15 |
$GLOBALS['_GEN_commun']['script_fichier'] = array(); |
|
// +------------------------------------------------------------------------------------------------------+ |
// Gestion des inclusions des fichiers d'applettes |
// PERF : on inclus des applettes meme s'il elle ne sont pas utilisées, les initialisations peuvent etre |
// longue et c'est source de bug ... |
// Gestion de l'espace de nom pour les balise Papyrus |
$GLOBALS['_GEN_commun']['balise_prefixe'] = 'PAPYRUS_'; |
$GLOBALS['_GEN_commun']['balise_prefixe_client'] = 'CLIENT_'; |
|
for ($i = 0; $i < count($_GEN_commun['info_applette']); $i++) { |
// Nous vérifions que le chemin vers l'applette existe. |
if (file_exists($_GEN_commun['info_applette'][$i]->gap_chemin)) { |
include_once($_GEN_commun['info_applette'][$i]->gap_chemin); |
// Nous récupérons l'expression régulière de la balise pour l'utiliser lors de l'appel |
// de la fonction de l'applette. L'appel des fonctions des applettes à lieu aprés l'appel |
// de l'application pour permettre à l'appli de modifier certains paramêtres (identification, ordre des menus). |
$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_balise = $GLOBALS['_GEN_commun']['info_applette_balise']; |
$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction = $GLOBALS['_GEN_commun']['info_applette_nom_fonction']; |
} else { |
// Ne devrait pas arréter le programme! Mais instancier le gestionnaire de déboguage. |
echo('ERREUR Papyrus : Impossible de trouver le fichier de l\'applette. <br />'. |
'Nom applette : '.$GLOBALS['_GEN_commun']['info_applette'][$i]->gap_nom.' <br />'. |
'Chemin fichier applette : '.$GLOBALS['_GEN_commun']['info_applette'][$i]->gap_chemin.' <br />'. |
'Ligne n° : '. __LINE__ .'<br />'. |
'Fichier : '. __FILE__ ); |
} |
} |
// +------------------------------------------------------------------------------------------------------+ |
// Gestion des inclusions des fichiers d'applettes présentes dans le squelette |
// TODO : Supprimer des fichiers du coeur de Papyrus, précédent ce fichier, la variable : $_GEN_commun['info_applette'] |
$GLOBALS['_PAPYRUS_']['info_applette'] = array(); |
Pap_Rendu::parserBaliseApplette($GLOBALS['_PAPYRUS_']['general']['contenu_squelette']); |
|
// +------------------------------------------------------------------------------------------------------+ |
// Gestion de l'intégration de l'application liée au menu |
335,7 → 323,7 |
|
// Affichage contenu si identifié (parametre : lecture = + ) |
|
$lecture=0; |
$lecture = 0; |
if ((isset($GLOBALS['_GEN_commun']['info_application']->lecture)) && ($GLOBALS['_GEN_commun']['info_application']->lecture=="+")) { |
if ($GLOBALS['_GEN_commun']['pear_auth']->getAuth()) { |
$lecture=1; |
410,95 → 398,14 |
// Appel de la fonction afficherContenuPied() si elle existe. |
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_PIED'] = (function_exists('afficherContenuPied') ? afficherContenuPied() : '<!-- '.'Aucun contenu pied'.' -->'); |
|
// +------------------------------------------------------------------------------------------------------+ |
// Gestion de l'espace de nom pour les balise Papyrus |
$GLOBALS['_GEN_commun']['balise_prefixe'] = 'PAPYRUS_'; |
// Compilation du contenu de l'application |
$GLOBALS['_PAPYRUS_']['general']['contenu_application'] = $GLOBALS['_PAPYRUS_']['rendu']['CONTENU_NAVIGATION']. |
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_TETE']. |
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_CORPS']. |
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_MENU']. |
$GLOBALS['_PAPYRUS_']['rendu']['CONTENU_PIED']; |
|
// +------------------------------------------------------------------------------------------------------+ |
// Gestion des appels des fonctions d'applettes de papyrus |
|
for ($i = 0; $i < count($GLOBALS['_GEN_commun']['info_applette']); $i++) { |
// Recherche du nombre de balise d'une applette donnée présentes dans le squelette |
$GLOBALS['_PAPYRUS_']['applette']['nbr_balise'] = preg_match_all( |
'/<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'('.$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_balise.') -->/', |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette'], |
$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'], |
PREG_SET_ORDER); |
// Si on trouve au moins une balise, on lance la boucle pour les remplacer |
for ($j = 0; $j <= ($GLOBALS['_PAPYRUS_']['applette']['nbr_balise'] - 1); $j++) { |
// Nous vérifions que le nom de la fonction principale de l'applette existe. |
if (function_exists($GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction)) { |
// Nous comptabilisons le nombre d'utilisation des applettes dans un squelette: |
if (!isset($GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction])) { |
$GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction] = 1; |
} else { |
$GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction]++; |
} |
$GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] = |
call_user_func( $GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction, |
$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j], |
$GLOBALS['_GEN_commun']); |
} else { |
$GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] = |
'<!-- '."\n". |
$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j][1].' : '. |
'fonction de l\'applette "'.$GLOBALS['_GEN_commun']['info_applette'][$i]->gap_nom.'" introuvable! '."\n". |
'Fonction : '.$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction."\n". |
' -->'; |
} |
// Remplacement des balises d'applette de Génésia dans le squelette |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] = |
str_replace( '<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j][1].' -->', |
$GLOBALS['_PAPYRUS_']['applette']['contenu_applette'], |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette']); |
} |
} |
|
|
|
// +------------------------------------------------------------------------------------------------------+ |
// Gestion des appels des fonctions d'applettes des applications clientes de papyrus |
|
$GLOBALS['_GEN_commun']['balise_prefixe_client'] = 'CLIENT_'; |
|
for ($i = 0; $i < count($GLOBALS['_GEN_commun']['info_applette']); $i++) { |
// Recherche du nombre de balise d'une applette donnée présentes dans le squelette |
$GLOBALS['_PAPYRUS_']['applette']['nbr_balise'] = preg_match_all( |
'/<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe_client'].'('.$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_balise.') -->/', |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette'], |
$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'], |
PREG_SET_ORDER); |
// Si on trouve au moins une balise, on lance la boucle pour les remplacer |
for ($j = 0; $j <= ($GLOBALS['_PAPYRUS_']['applette']['nbr_balise'] - 1); $j++) { |
// Nous vérifions que le nom de la fonction principale de l'applette existe. |
if (function_exists($GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction)) { |
// Nous comptabilisons le nombre d'utilisation des applettes dans un squelette: |
if (!isset($GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction])) { |
$GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction] = 1; |
} else { |
$GLOBALS['_PAPYRUS_']['applette']['comptage'][$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction]++; |
} |
$GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] = |
call_user_func( $GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction, |
$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j], |
$GLOBALS['_GEN_commun']); |
} else { |
$GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] = |
'<!-- '."\n". |
$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j][1].' : '. |
'fonction de l\'applette "'.$GLOBALS['_GEN_commun']['info_applette'][$i]->gap_nom.'" introuvable! '."\n". |
'Fonction : '.$GLOBALS['_GEN_commun']['info_applette'][$i]->applette_fonction."\n". |
' -->'; |
} |
// Remplacement des balises d'applette de Génésia dans le squelette |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] = |
str_replace( '<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe_client'].$GLOBALS['_PAPYRUS_']['applette']['applet_arguments'][$j][1].' -->', |
$GLOBALS['_PAPYRUS_']['applette']['contenu_applette'], |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette']); |
} |
} |
|
// +------------------------------------------------------------------------------------------------------+ |
// Continuation recherche d'info provenant de Papyrus pour la complétion du squelette |
|
// Une fois l'application appelé est executé nous affichons le contenu de l'entête qui a pu |
519,7 → 426,51 |
$GLOBALS['_PAPYRUS_']['tmp']['val'], |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette']); |
} |
|
// +------------------------------------------------------------------------------------------------------+ |
// Gestion des inclusions des fichiers d'applettes présentes dans le contenu généré par l'application |
Pap_Rendu::parserBaliseApplette($GLOBALS['_PAPYRUS_']['general']['contenu_application']); |
//echo '<pre>'.print_r($GLOBALS['_PAPYRUS_']['info_applette'], true).'</pre>'; |
|
// +------------------------------------------------------------------------------------------------------+ |
// Remplacement des balises des applettes de Papyrus et des Clients |
foreach ($GLOBALS['_PAPYRUS_']['info_applette'] as $applette_id => $applette_val) { |
// Si on trouve au moins une balise, on lance la boucle pour les remplacer |
if (!isset($GLOBALS['_PAPYRUS_']['info_applette'][$applette_id]['balises'])) { |
echo 'oc:'.$applette_id; |
} |
for ($j = 0; $j < count($GLOBALS['_PAPYRUS_']['info_applette'][$applette_id]['balises']); $j++) { |
// TODO : supprimer cette particularité et utiliser la variable $GLOBALS['_PAPYRUS_']['info_applette'] |
// Nous comptabilisons le nombre d'utilisation des applettes dans un squelette pour l'applette Menu: |
if (!isset($GLOBALS['_PAPYRUS_']['applette']['comptage'][$applette_val['applette_fonction']])) { |
$GLOBALS['_PAPYRUS_']['applette']['comptage'][$applette_val['applette_fonction']] = 1; |
} else { |
$GLOBALS['_PAPYRUS_']['applette']['comptage'][$applette_val['applette_fonction']]++; |
} |
// Nous vérifions que le nom de la fonction principale de l'applette existe. |
if (function_exists($GLOBALS['_PAPYRUS_']['info_applette'][$applette_id]['applette_fonction'])) { |
$GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] = |
call_user_func( $GLOBALS['_PAPYRUS_']['info_applette'][$applette_id]['applette_fonction'], |
$GLOBALS['_PAPYRUS_']['info_applette'][$applette_id]['balises'][$j], |
$GLOBALS['_GEN_commun']); |
} else { |
$GLOBALS['_PAPYRUS_']['applette']['contenu_applette'] = |
'<!-- '."\n". |
$GLOBALS['_PAPYRUS_']['info_applette'][$applette_id]['balises'][$j][0].' : '. |
'fonction de l\'applette "'.$applette_id.'" introuvable! '."\n". |
'Fonction : '.$GLOBALS['_PAPYRUS_']['info_applette'][$applette_id]['applette_fonction']."\n". |
' -->'; |
} |
// Remplacement des balises d'applette de Papyrus dans le squelette |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette'] = |
preg_replace( '/'.$GLOBALS['_PAPYRUS_']['info_applette'][$applette_id]['balises'][$j][0].'/', |
$GLOBALS['_PAPYRUS_']['applette']['contenu_applette'], |
$GLOBALS['_PAPYRUS_']['general']['contenu_squelette']); |
} |
} |
|
|
// +------------------------------------------------------------------------------------------------------+ |
// Remplacement des actions Papyrus dans le squelette |
// Création d'un objet Text_Papyrus : |
$papyrus =& new Text_Papyrus(); |
539,6 → 490,10 |
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.29 2006/04/20 09:45:30 alexandre_tb |
* ligne 92, remplacement de gs_fichier_squelette par gm_fichier_squelette, car on appelle le squelette du menu (s'il existe) et non du site. |
* Posait un pb lors de l'affichage de squelettes (de menu) des traductions de menu |
* |
* Revision 1.28 2006/03/13 21:00:20 ddelon |
* Suppression messages d'erreur multilinguisme |
* |