<?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>