<?php
// ------------------------------------------------------------------------- //
// chargement dynamique FRAMES/NOFRAMES //
// ------------------------------------------------------------------------- //
// Auteur: Gilbert Armengaud //
// Email: <gilbarme@club-internet.fr> //
// Web: http://www.crama.fr.fm/ //
// ------------------------------------------------------------------------- //
// Dans le cadre d'un développement multiplateforme (PC, Amiga principalement)
// j'ai eu besoin de pouvoir automatiquement générer en PHP des pages en Frames
// comme des pages Sans Frames.
// Pour cela je me suis créé un ensemble de scripts et fonctions
?>
-------------------------------------------------------------------------------
1. génération automatique d'URL avec gestion des étiquettes HTML
(<a NAME=""> : SetHref()
-------------------------------------------------------------------------------
<?php
function sethref ( $param , $libel ) {
//////////////////////////////////////////////////////////////////////////
// fonction de génération automatique les liens URL //
// $param : ensemble des paramêtres passés pour l'appel au script //
// $libel : libellé encapsulé par l'appel à l'URL //
// $page : initialisé dans l'appel à $PHP_SELF //
//////////////////////////////////////////////////////////////////////////
// ARMENGAUD Gilbert //
// GAMA 7 PRODUCTION (C) 21.XI.2000 //
// version 0.3.6 béta //
// fichier : set_HREF.inc //
//////////////////////////////////////////////////////////////////////////
// dans le cas ou l'on ne préciserait pas 'pret' avec 'eret' dans les //
// paramètres, il faut être capable de générer le paramètre marquant //
// alors : pret = $text, mais $text de la page traitée en cours //
//////////////////////////////////////////////////////////////////////////
// - pour la gestion des frames et de l'impact de chargements sur une //
// adjacente, on peut prendre pour postulat qu'un chargemnt ne peut //
// impacter que la frame courante (_self) et une adjacente => gestion //
// via une table passée en paramètre donnant la frame adjacente avec en //
// paramètre le nom de la frame courante (tout ceci via les noms des //
// scripts) //
// il faut également bien circonstancier les appels aux fonctions script//
// javascript suivant le script d'origine //
//////////////////////////////////////////////////////////////////////////
global $PHP_SELF, $nscript;
$href = chr(60) .'A ';
// traitement paramètre Etiquette RETour (eret)
if ( ereg( 'eret', $param ) ) :
$deb = strpos( $param, 'eret');
$deb += 5;
$fin = strpos( $param, '&' , $deb);
$lg = strlen($param);
if ( $fin == false ) :
$eret = substr ( $param, $deb, $lg - $deb + 1 );
else:
$eret = substr ( $param, $deb, $fin - $deb );
endif;
$href .= ' NAME=' .chr(34) .$eret .chr(34);
endif;
$href .= ' HREF=' .chr(34) .$nscript .'?' .$param .chr(34) ;
// traitement affichage dans FRAMES (2 : menu / text )
if ( ereg( 'pgf_menu.php', $nscript) ) :
$href .= ' onclick="loadtext(' .chr(39) .'pgf_text.php?' .$param .chr(39) .')"';
else:
if ( ereg('pgf_text.php', $nscript) ) :
$href .= ' onclick="loadmenu(' .chr(39) .'pgf_menu.php?' .$param .chr(39) .')"';
endif;
endif;
// mise du libellé et des Tag HTML de fin de liens
$href .= chr(62);
if ( $libel != '' ) :
$href .= $libel;
else:
$href .= '_';
endif;
$href .= chr(60) .'/A' .chr(62) ;
return $href;
}
?>
-------------------------------------------------------------------------------
2. chargement de la page INDEX.* et appel au scripts spécifiques
-------------------------------------------------------------------------------
<?php
include('setHREF.inc');
// ensembles des paramètres de configuration
require('inc/param.inc.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML3.2//EN">
<HTML>
<HEAD>
</HEAD>
<FRAMESET FRAMEBORDER="NO" BORDER=0 resize="YES" COLS="240,520">
<FRAMESET FRAMEBORDER="NO" BORDER=0 resize="YES" ROWS="180,210">
<FRAME NAME="logo" SRC="frpg.php?finc=PAGE/CRAMA" SCROLLING="auto">
<FRAME NAME="somm" SRC="frpg.php?finc=PAGE/BASE_menu" target="somm" SCROLLING="auto">
</FRAMESET>
<FRAME NAME="txt" SRC="frpg.php?finc=PAGE/BASE_text" target="txt" SCROLLING="auto">
</FRAMESET>
<NOFRAMES>
<body>
<IMG SRC="IMAGES/Wb01432_.gif" WIDTH="775" HEIGHT="11" BORDER="0">
<TABLE BORDER=0 width="776">
<TR>
<TD BGCOLOR=#FFFFFF WIDTH="232" valign="top">
<?php include( 'PAGE/CRAMA.php' ) ?>
<?php $nscript = 'pgnf.php'; include( 'PAGE/BASE_menu.php' ) ?>
</TD>
<TD BGCOLOR=#FFFFFF WIDTH="556" COLSPAN="0" ROWSPAN="0">
<?php $nscript = 'pgnf.php'; include( 'PAGE/BASE_text.php') ?>
</TD>
</TR>
</TABLE>
<IMG SRC="IMAGES/Wb01432_.gif" WIDTH="775" HEIGHT="11" BORDER="0">
</body>
</NOFRAMES>
</HTML>
-------------------------------------------------------------------------------
3. script d'encapsulage pour le premier appel partie dans FRAME
-------------------------------------------------------------------------------
<?php
//////////////////////////////////////////////////////////////////////////
// procédure de génération automatique de page pour FRAMES //
// $finc : page à afficher //
//////////////////////////////////////////////////////////////////////////
// ARMENGAUD Gilbert //
// GAMA 7 PRODUCTION (C) 22.XI.2000 //
// version 1.1.0 béta //
// fichier : frpg.php //
//////////////////////////////////////////////////////////////////////////
include ('setHREF.inc');
?>
<HTML>
<HEAD>
<script languages="Javascript">
<!-- script de chargement des frames txt et Somm -->
<!--
function loadtext(p1)
{ parent.txt.location.href=p1
}
function loadmenu(p2)
{ parent.somm.location.href=p2
}
// -->
</script>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<?php
if (ereg('menu',$finc)) :
$nscript = '/pgf_menu.php';
else:
$nscript = '/pgf_text.php';
endif;
// traitement de la page à afficher
include( $finc .'.php' );
?>
</BODY>
-------------------------------------------------------------------------------
4. chargement partie frame menu
-------------------------------------------------------------------------------
<HTML>
<?php
//////////////////////////////////////////////////////////////////////////
// procédure de génération automatique de page pour FRAMES MENU //
// $inc : //
// $menu : //
//////////////////////////////////////////////////////////////////////////
// ARMENGAUD Gilbert //
// GAMA 7 PRODUCTION (C) 06.XII.2000 //
// version 1.0.0 béta //
// fichier : pgf_menu.php //
//////////////////////////////////////////////////////////////////////////
if (! ereg("/", $finc)) :
$finc = 'PAGE/' .$finc;
endif;
include ('setHREF.inc');
?>
<HEAD>
<script languages="Javascript">
<!--
function loadtext(p)
{ parent.txt.location.href=p
}
// -->
</script>
</HEAD>
<BODY ALIGN="LEFT">
<?php
$nscript = $PHP_SELF;
// traitement de la page menu à afficher
if ($menu != '') :
$finc = 'PAGE/' .$menu .'_menu.php' ;
else:
$finc .= '_menu.php';
endif;
include( $finc );
?>
</BODY>
-------------------------------------------------------------------------------
5. chargement partie frame texte
-------------------------------------------------------------------------------
<HTML>
<?php
//////////////////////////////////////////////////////////////////////////
// procédure de génération automatique de page pour FRAMES //
// $inc : page à afficher //
// $eret //
// $pret //
//////////////////////////////////////////////////////////////////////////
// ARMENGAUD Gilbert //
// GAMA 7 PRODUCTION (C) 22.XI.2000 //
// version 1.1.0 béta //
// fichier : pgf_text.php //
//////////////////////////////////////////////////////////////////////////
$inc = $finc;
if (! ereg("/", $finc)) :
$finc = 'PAGE/' .$finc;
endif;
include ('setHREF.inc');
require('inc/param.inc.php');
?>
<HEAD>
<script language="JavaScript">
<!--
function loadmenu(p)
{ parent.somm.location.href=p
}
// -->
</script>
</HEAD>
<BODY>
<?php
$nscript = $PHP_SELF;
// traitement de la page à afficher
if (! ereg("PAGE", $finc)) :
$finc .= '.php';
else:
$finc .= '_text.php';
endif;
include( $finc );
// traitement de l'étiquette de retour
if ($eret != '' and $pret != '') :
echo '<a href="pgf_text.php?finc=' .$pret;
if ($menu != '' and $menu != $pret) :
echo '&menu=' .$menu;
endif;
echo '#' .$eret .'"> Retour au document</a>';
endif;
?>
</BODY>
-------------------------------------------------------------------------------
6. chargement de page sans frames (site sur une page)
-------------------------------------------------------------------------------
<?php
//////////////////////////////////////////////////////////////////////////
// procédure de génération automatique de page sans FRAMES //
// $finc : page à afficher //
// $menu : précisé si différent de celui associé à la page text //
// $eret : étiquette de retour sur page appelante //
// $pret : référence de retour sur page appelante //
//////////////////////////////////////////////////////////////////////////
// ARMENGAUD Gilbert //
// GAMA 7 PRODUCTION (C) 22.XI.2000 //
// version 1.0.2 béta //
// fichier : pgnf.php //
//////////////////////////////////////////////////////////////////////////
if (! ereg("/", $finc)) :
$finc = 'PAGE/' .$finc;
endif;
require('setHREF.inc');
?>
<HTML>
<!-- Created with GoldED 5.0 (27.7.0) -->
<HEAD>
<META NAME="description" CONTENT="page frontal non frames">
<META NAME="keywords" CONTENT="NONE">
<META NAME="author" CONTENT="ARMENGAUD Gilbert">
<META NAME="generator" CONTENT="WWW publishing extensions for GoldED">
<META NAME="robots" CONTENT="NONE">
</HEAD>
<BODY>
<?php
$nscript = $PHP_SELF;
?>
<IMG SRC="IMAGES/WB01432_.GIF" WIDTH="775" HEIGHT="11" BORDER="0">
<TABLE BORDER=0 width="776">
<TR>
<TD BGCOLOR=#FFFFFF WIDTH="232" valign="top">
<?php
// traitement du logo à afficher
include( 'PAGE/CRAMA.inc' );
// traitement du menu à afficher
if ($menu != '') :
include('PAGE/' .$menu .'_menu.inc');
else:
include( $finc .'_menu.inc');
endif;
?>
</TD>
<TD BGCOLOR=#FFFFFF WIDTH="556" COLSPAN="0" ROWSPAN="0">
<?php
// traitement de la page à afficher
if (ereg('PAGE',$finc)) :
include( $finc .'_texte.inc');
else:
include( $finc .'.inc' );
endif;
// traitement de l'étiquette de retour
if ($eret != '' and $pret != '') :
echo '<a href="pgnf.php?inc=' .$pret;
if ($menu != '' and $menu != $pret) :
echo '&menu=' .$menu;
endif;
echo '#' .$eret .'"> Retour au document</a>';
endif;
?>
</TD>
</TR>
</TABLE>
<IMG SRC="IMAGES/WB01432_.GIF" WIDTH="775" HEIGHT="11" BORDER="0">
</BODY>
</HTML>