« Programmation PHP/Exemples/MiniCMS » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 1 921 :
On est nominal pour l'ajaxification de la completion du contenu coté client.
 
==== Implémentation des controleurs coté serveur ====
 
<b>Common.inc.php :</b>
<source lang="php">
<?php
/*
common application functiunalities
 
would be fine to merge all request to requestForData
 
*/
 
require_once CLA . "/utilities.class.php" ;
require_once CLA . "/dataManager.class.php" ;
require_once CLA . "/templateControler.class.php" ;
 
function requestForLayout($pTerm,$pOwner="Root",$pTemplate="default")
/**
* layout request
*/
{
$tmp = new templateControler(array("path"=>"./Owners/" . $pOwner . "/Templates/" . $pTemplate . ".xml"));
$node = $tmp->getNode('//page[@id="' . $pTerm . '"]') ;
return $node[0]->nodeValue;
}
 
function requestForData($pTerm)
/**
* data request
*/
{
 
$_lst = explode("|",$pTerm) ;
$_manager = new dataManager();
$_manager->data['path'] = $_manager->data['root'] . "Root/Contents/" . $_lst[0] . ".xml"; //
$_document = $_manager->initialize();
if($_lst[1])
$_manager->data['query_1'] = array("attribute"=>"number", "value"=>$_lst[1]);
if($_lst[2])
$_manager->data['query_2'] = array("attribute"=>"id", "value"=>$_lst[2]);
$res = dataManager::getContentByData(
dataManager::getContentByData($_document, $_manager->data['query_1'])
,$_manager->data['query_2']);
$node = isset($_lst[3]) ? $_lst[3] : "content" ;
$str = $res->getElementsByTagName($node) ;
return $str->item(0)->nodeValue ;
}
 
?>
</source>
 
 
<b>Responder.inc.php :</b>
<source lang="php">
<?php
//
$_ = explode(":",$_REQUEST['id']) ;
$_content = "" ;
switch( true )
/**
* content type switcher
*/
{
case ($_[0] == "lay") :
// template request
$_content = requestForLayout($_[1]) ;
break ;
case ($_[0] == "data") :
// data request
$_content = requestForData($_[1]) ;
break ;
}
 
# OUTPUT
 
echo $_REQUEST['id'] . "~@~" . $_[1] . "~@~" . $_content ;
?>
</source>
==== Auto complétion du layout ====