Le reste des fichiers, c'est une interface de gestion de cette arborescence de paramètres, en PHP + javascript, full Ajax
La page de contrôle est gere_nparam.php
<?php
//$environnement = strtoupper( $_GET['env'] );
$environnement = 'PRD';
require_once("nparametre.class.php");
$param = new nParametre($environnement);
$path_sep = $param->getsep();
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="Content-Type" content="text/html" charset="utf-8">
<link href="nparam.css" media="all" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="func_ajax_common.js"></script>
<script type="text/javascript">
var ENVIRONNEMENT = "<?php echo $environnement; ?>";
var PATH_SEP = "<?php echo $path_sep; ?>";
</script>
<script type="text/javascript" src="gere_nparam.js"></script>
<title>Gestion des paramètres</title>
</head>
<body>
<div
class="mainblock"
>
<input
type="hidden"
name="env"
value="<?php echo $environnement; ?>"
>
<img
id="importexport"
src="../_img/paperclip-2x.png"
alt="F"
class="petitbouton"
title="Glissez une branche sur cette icone pour l'exporter.
Glissez l'icone sur une branche pour l'y ajouter.
Glissez l'icone sur un code '+' pour l'ajouter à la branche."
ondragover="allowDrop(event)"
ondrop="exportation(event)"
ondragstart="depart_import(event)"';
/>
<table>
<tr
id="BRA_"
>
</tr>
</table>
<div id="infos">
</div>
</div>
<script type="text/javascript">
liste ( '' );
</script>
</body>
</html>
Le code JavaScript est dans gere_nparam.js
[javascript]function parent_path( path ) {
"use strict";
var liste = path.split( PATH_SEP );
liste.pop();
return liste.join( PATH_SEP );
}
function path_code( path ) {
"use strict";
var liste = path.split( PATH_SEP );
return liste.pop();
}
function openclose(id) {
"use strict";
var ligne = document.getElementById("BRA_"+id);
var btn = document.getElementById("OPCL_"+id);
if ( ligne.getElementsByTagName('td').length == 2) {
btn.src = "caret-bottom-2x.png";
btn.title = 'Masquer les paramètres contenus dans cette branche ';
liste(id);
}
else {
btn.src = "caret-right-2x.png";
btn.title = 'Afficher les paramètres contenus dans cette branche ';
ligne.deleteCell(-1);
}
}
function maj(id) {
"use strict";
var valeur = document.getElementById("VAL_"+id);
var erreur = document.getElementById("ERR_"+id);
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
erreur.innerHTML = xhr.responseText;
valeur.style.backgroundColor = "";
}
};
// var script = "gere_nparam_action.php?env=" + ENVIRONNEMENT;
var scriptphp = "gere_nparam_action.php";
var script = "env=" + ENVIRONNEMENT;
script = script + "&action=maj";
script = script + "&path="+encodeURIComponent(id);
script = script + "&value="+encodeURIComponent(valeur.value);
script = script + "&seed=" + makeId(10);
//alert(script);
// xhr.open("GET", script, true);
// xhr.send(null);
xhr.open("POST",scriptphp,true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(script);
}
function setNormalCell( id ) {
"use strict";
var elem_code = document.getElementById("CNEW_" + id);
var cellulec = elem_code.parentNode;
var ligne = cellulec.parentNode;
var cellulev = document.getElementById("VCELL_" + id);
var path = elem_code.value;
if ( id != '' && id != null ) {
path = id + PATH_SEP + path;
}
// ligne TR
ligne.id = 'BRA_'+path;
// cellule TD 'code'
var contenuc = '';
contenuc = contenuc + '<span';
contenuc = contenuc + ' id="CODE_' + path + '"';
contenuc = contenuc + ' ondblclick="javascript:openclose(\'' + path + '\');"';
contenuc = contenuc + ' ondragstart="drag_code(event)"';
contenuc = contenuc + ' ondragover="allowDrop(event)"';
contenuc = contenuc + ' ondrop="drop_on_code(event)"';
contenuc = contenuc + '>'
contenuc = contenuc + elem_code.value;
contenuc = contenuc + '</span>';
contenuc = contenuc + ' ';
contenuc = contenuc + '<span class="bouton_a_droite">';
contenuc = contenuc + '<img';
contenuc = contenuc + ' id="OPCL_' + path + '"';
contenuc = contenuc + ' src="caret-right-2x.png"';
contenuc = contenuc + ' onclick="javascript:openclose(\'' + path + '\');"';
contenuc = contenuc + ' title="Afficher les paramètres contnus dans cette branche"';
contenuc = contenuc + ' alt=">"';
contenuc = contenuc + '/>';
contenuc = contenuc + '</span>';
cellulec.innerHTML = contenuc;
// cellule TD 'valeur'
var contenuv = '';
contenuv = contenuv + '<textarea';
contenuv = contenuv + ' id="VAL_' + path + '"';
contenuv = contenuv + ' rows="1"';
contenuv = contenuv + ' cols="3"';
contenuv = contenuv + ' title="Saisissez la nouvelle valeur pour le code: "' + elem_code.value;
contenuv = contenuv + ' onchange="javascript:maj(\'' + path + '\');"';
contenuv = contenuv + ' onKeydown="javascript:colore_maj(\'VAL_\',\'' + path + '\');"';
contenuv = contenuv + ' onBlur="javascript:decolore_maj(\'VAL_\',\'' + path + '\');"';
contenuv = contenuv + '></textarea>';
// bouton supprimer
contenuv = contenuv + '<span class="bouton_a_droite">';
contenuv = contenuv + '<img';
contenuv = contenuv + ' src="delete-2x.png"';
contenuv = contenuv + ' alt="x"';
contenuv = contenuv + ' onclick="javascript:del(\'' + path + '\');"';
contenuv = contenuv + ' title="Suprimer le code: ' + elem_code.value + '"';
contenuv = contenuv + '/>';
contenuv = contenuv + '</span>';
contenuv = contenuv + '<span';
contenuv = contenuv + ' id="ERR_' + path + '"';
contenuv = contenuv + ' style="display:inline-block; align=right; font-size:0.75em;"';
contenuv = contenuv + '</span>';
cellulev.innerHTML = contenuv;
cellulev.id = null;
var newval = document.getElementById("VAL_" + path);
newval.focus();
}
function addEmptyNewCell( id ) {
"use strict";
var refid = "TAB_";
if ( id != null )
refid = refid + id;
var conteneur = document.getElementById( refid );
var contenuc = '';
var contenuv = '';
var nl = conteneur.insertRow(-1);
var newelem_code = nl.insertCell(-1);
var newelem_valeur = nl.insertCell(-1);
contenuc = '';
contenuc = contenuc + '<textarea';
contenuc = contenuc + ' id="CNEW_' + id + '"';
contenuc = contenuc + ' rows="1" cols="6"';
contenuc = contenuc + ' title="Saisissez ici le code a creer dans ce niveau"';
contenuc = contenuc + ' onchange="javascript:newparam(\'' + id + '\');"';
contenuc = contenuc + ' onKeydown="javascript:colore_maj(\'CNEW_\',\'' + id + '\');"';
contenuc = contenuc + ' onBlur="javascript:decolore_maj(\'CNEW_\',\'' + id + '\');"';
contenuc = contenuc + ' ondragover="allowDrop(event)"';
contenuc = contenuc + ' ondrop="drop_on_newcode(event)"';
contenuc = contenuc + ' placeholder="+"';
contenuc = contenuc + '></textarea>';
newelem_code.innerHTML = contenuc;
newelem_valeur.id = 'VCELL_' + id;
contenuv = '';
contenuv = contenuv + '<div';
contenuv = contenuv + ' id="ENEW_' + id + '"';
contenuv = contenuv + ' style="display:inline-block; font-size:0.75em; vertical-align:top;"';
contenuv = contenuv + '>';
contenuv = contenuv + '</div>';
newelem_valeur.innerHTML = contenuv;
}
function newparam( id ) {
"use strict";
var elem_code = document.getElementById("CNEW_"+id);
var val_code = elem_code.value;
var erreur = document.getElementById("ENEW_"+id);
if ( val_code != '' ) {
elem_code.style.backgroundColor = "#D0FFD0";
var xhr = getXMLHttpRequest();
// var script = "gere_nparam_action.php?env=" + ENVIRONNEMENT;
var scriptphp = "gere_nparam_action.php";
var script = "env=" + ENVIRONNEMENT;
script = script + "&action=NEW";
script = script + "&path="+encodeURIComponent(id);
script = script + "&code="+encodeURIComponent(val_code);
script = script + "&seed=" + makeId(10);
// xhr.open("GET", script, false);
// xhr.send(null);
xhr.open("POST",scriptphp,false);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(script);
elem_code.style.backgroundColor = "";
erreur.innerHTML = xhr.responseText;
if (xhr.responseText == '') {
addEmptyNewCell( id );
setNormalCell( id );
}
}
}
function verif_suppression( id ) {
"use strict";
var xhr = getXMLHttpRequest();
// var script = "gere_nparam_action.php?env=" + ENVIRONNEMENT;
var scriptphp = "gere_nparam_action.php";
var script = "env=" + ENVIRONNEMENT;
script = script + "&action=CTRL_DEL";
script = script + "&path="+encodeURIComponent(id);
script = script + "&seed=" + makeId(10);
// xhr.open("GET", script, false);
// xhr.send(null);
xhr.open("POST",scriptphp,false);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(script);
if (xhr.responseText != '') {
return ( xhr.responseText );
}
else {
return ( 0 );
}
}
function del( id ) {
"use strict";
var msg_ctrl = verif_suppression(id);
var reponse;
if ( ! msg_ctrl ||
( msg_ctrl && confirm ( msg_ctrl + "\nEtes-vous sûr de vouloir tout supprimer ?") )
) {
var valeur = document.getElementById("VAL_"+id);
var erreur = document.getElementById("ERR_"+id);
var cellule = valeur.parentNode;
var ligne = cellule.parentNode;
var tbl = ligne.parentNode;
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
if (xhr.responseText != '') {
erreur.innerHTML = xhr.responseText;
}
else {
tbl.deleteRow(ligne.rowIndex);
}
}
};
// var script = "gere_nparam_action.php?env=" + ENVIRONNEMENT;
var scriptphp = "gere_nparam_action.php";
var script = "env=" + ENVIRONNEMENT;
script = script + "&action=del";
script = script + "&path="+encodeURIComponent(id);
script = script + "&seed=" + makeId(10);
// xhr.open("GET", script, true);
// xhr.send(null);
xhr.open("POST",scriptphp,true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(script);
}
}
function liste( id ) {
"use strict";
var refid = "BRA_";
if ( id != null )
refid = refid + id;
var cellule = document.getElementById( refid ).insertCell(-1);
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
cellule.innerHTML = xhr.responseText;
}
};
// var script = "gere_nparam_action.php?env=" + ENVIRONNEMENT;
var scriptphp = "gere_nparam_action.php";
var script = "env=" + ENVIRONNEMENT;
script = script + "&action=liste";
script = script + "&path="+encodeURIComponent(id);
script = script + "&admin=Y";
script = script + "&seed=" + makeId(10);
//alert('liste script'+script);
// xhr.open("GET", script, true);
// xhr.send(null);
xhr.open("POST",scriptphp,true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(script);
}
function colore_maj(prefixe, id) {
"use strict";
var champ = document.getElementById(prefixe+id);
champ.style.backgroundColor = "#E0E0F8";
var tb_champ = champ.value.split( "\n" );
var nbrows;
if ( tb_champ.length > 19 )
nbrows = 20;
else
nbrows = tb_champ.length;
champ.rows = nbrows;
var max_length = 1;
var index;
for (index = 0; index < tb_champ.length; ++index) {
if ( tb_champ[index].length > max_length )
max_length = tb_champ[index].length;
}
if ( max_length > 100 )
max_length = 100;
if ( max_length < champ.cols )
max_length = champ.cols;
champ.cols = max_length;
}
function decolore_maj(prefixe, id) {
"use strict";
var champ = document.getElementById(prefixe+id);
champ.style.backgroundColor = "";
}
function allowDrop(ev) {
ev.preventDefault();
}
function drag_code(ev) {
"use strict";
ev.dataTransfer.setData("text/html", ev.target.id);
//alert("dragcode-target_id:"+ev.target.id);
}
function drop_on_newcode(ev) {
ev.preventDefault();
var elem = ev.dataTransfer.getData("text/html");
if ( elem == 'importexport' ) {
// import
var id = ev.target.id.substr( ev.target.id.indexOf("_",0) + 1 );
var xhr = getXMLHttpRequest();
// var script = "gere_nparam_action.php?env=" + ENVIRONNEMENT;
var scriptphp = "gere_nparam_action.php";
var script = "env=" + ENVIRONNEMENT;
script = script + "&action=IMPORT";
script = script + "&parent="+encodeURIComponent(id);
script = script + "&seed=" + makeId(10);
// xhr.open("POST", script, false);
// xhr.send(null);
xhr.open("POST",scriptphp, false);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(script);
if ( xhr.responseText != '' ) {
document.getElementById("infos").innerHTML = xhr.responseText;
}
else {
alert( 'Import effectué.' );
}
openclose(id);
openclose(id);
}
else {
// copie
var id = elem.substr( elem.indexOf("_",0) + 1 );
// ev.target.appendChild(document.getElementById(id));
// document.getElementById());
}
}
function drop_on_code(ev) {
ev.preventDefault();
var elem = ev.dataTransfer.getData("text/html");
//alert("droponcode:"+elem+" target="+ev.target.id);
if ( elem == 'importexport' ) {
// import
var id = ev.target.id.substr( ev.target.id.indexOf("_",0) + 1 );
var xhr = getXMLHttpRequest();
// var script = "gere_nparam_action.php?env=" + ENVIRONNEMENT;
var scriptphp = "gere_nparam_action.php";
var script = "env=" + ENVIRONNEMENT;
script = script + "&action=IMPORT";
script = script + "&parent="+encodeURIComponent(id);
script = script + "&seed=" + makeId(10);
// xhr.open("GET", script, false);
// xhr.send(null);
xhr.open("POST",scriptphp, false);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(script);
if ( xhr.responseText != '' ) {
document.getElementById("infos").innerHTML = xhr.responseText;
}
else {
alert( 'Import effectué.' );
}
openclose(id);
openclose(id);
}
else {
// copie
var id = elem.substr( elem.indexOf("_",0) + 1 );
// ev.target.appendChild(document.getElementById(id));
// document.getElementById());
}
}
function exportation(ev) {
ev.preventDefault();
var elem = ev.dataTransfer.getData("text/html");
var id = elem.substr( elem.indexOf("_",0) + 1 );
var xhr = getXMLHttpRequest();
// var script = "gere_nparam_action.php?env=" + ENVIRONNEMENT;
var scriptphp = "gere_nparam_action.php";
var script = "env=" + ENVIRONNEMENT;
script = script + "&action=EXPORT";
script = script + "&path=" + encodeURIComponent(id);
script = script + "&file=" + "param_export.txt";
script = script + "&seed=" + makeId(10);
// xhr.open("GET", script, false);
// xhr.send(null);
xhr.open("POST",scriptphp, false);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(script);
if ( xhr.responseText != '' ) {
alert( xhr.responseText );
}
else {
alert( 'Export effectué.' );
}
}
function depart_import(ev) {
"use strict";
ev.dataTransfer.setData("text/html", ev.target.id);
}
[/javascript]
la page PHP des actions appelées par l'objet Ajax est gere_nparam_action.php
<?php
// -----------------------------------------------------------------------
// Actions sur parametre
// -----------------------------------------------------------------------
require_once("logmsg.class.php");
// les 2 parametres suivants sont obligatoires
if ( ! isset($_POST['env']) || ! isset($_POST['action']) ) {
echo 'Erreur dans les parametres recus (0)';
die();
}
$environnement = strtoupper( $_POST['env'] );
$action = strtoupper( $_POST['action'] );
require_once("nparametre.class.php");
$param = new nParametre($environnement);
switch ( $action ) {
//--------------------------------------------------------------------
case "LISTE":
if ( ! isset($_POST['path']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$pParent = $_POST['path'];
$pListe = $param->liste( $pParent );
echo "\n";
echo '<td>';
echo '<table';
echo ' id="TAB_' . $pParent . '" ';
echo ' style="vertical-align:top;';
echo '">';
echo '<tr>';
echo '<th>Code parametre</th>';
echo '<th>Valeur</th>';
echo '</tr>';
foreach ($pListe as $clef=>$colonne) {
// parcourt les param de la branche 'path'
echo '<tr';
echo ' id="BRA_' . $colonne['PRM_PATH'] .'"';
echo '>';
// cellule 'code'
echo '<td ';
echo ' style="vertical-align:top"';
echo '>';
echo '<span';
echo ' draggable="true"';
echo ' id="CODE_' . $colonne['PRM_PATH'] . '"';
echo ' ondblclick="javascript:openclose(\'' . $colonne['PRM_PATH'] . '\');"';
echo ' ondragstart="drag_code(event)"';
echo ' ondragover="allowDrop(event)"';
echo ' ondrop="drop_on_code(event)"';
echo '>';
echo $colonne['PRM_CODE'];
echo '</span>';
echo ' ';
// -------- bouton plier/deplier
echo '<span class="bouton_a_droite">';
echo '<img';
echo ' id="OPCL_' . $colonne['PRM_PATH'] . '"';
echo ' src="caret-right-2x.png"';
echo ' onclick="javascript:openclose(\'' . $colonne['PRM_PATH'] . '\');"';
echo ' title="Afficher les paramètres contenus dans cette branche"';
echo ' alt=">"';
echo ' />';
echo '</span>';
echo '</td>';
// cellule 'valeur'
echo '<td style="vertical-align:top">';
echo '<textarea';
echo ' id="VAL_'.$colonne['PRM_PATH'].'"';
$lignes_champs = explode( "\n", $colonne['PRM_VALUE'] );
if ( count( $lignes_champs ) > 19 )
$nbrows = 20;
else
$nbrows = count( $lignes_champs );
$max_length = 1;
foreach ( $lignes_champs as $ligne )
if ( strlen( $ligne ) > $max_length )
$max_length = strlen( $ligne );
if ( $max_length > 200 )
$nbrows += 2;
if ( $max_length > 100 )
$max_length = 100;
echo ' rows="'. $nbrows .'"';
echo ' cols="'. $max_length .'"';
if ( ! isset($_POST['admin']) ) {
echo ' disabled';
}
else {
echo ' title="Saisissez la nouvelle valeur pour le code: ' . $colonne['PRM_CODE'] . '"';
echo ' onchange="javascript:maj(\'' . $colonne['PRM_PATH'] . '\');"';
echo ' onKeydown="javascript:colore_maj(\'VAL_\',\'' . $colonne['PRM_PATH'] . '\');"';
echo ' onBlur="javascript:decolore_maj(\'VAL_\',\'' . $colonne['PRM_PATH'] . '\');"';
}
echo '>';
echo $colonne['PRM_VALUE'];
echo '</textarea>';
// -------- bouton supprimer
echo '<span class="bouton_a_droite">';
echo '<img';
echo ' src="delete-2x.png"';
echo ' alt="x"';
if ( ! isset($_POST['admin']) ) {
echo ' disabled';
}
else {
echo ' onclick="javascript:del(\'' . $colonne['PRM_PATH'] . '\');"';
echo ' title="Suprimer le code: ' . $colonne['PRM_CODE'] . '"';
}
echo ' />';
echo '</span>';
echo '<span';
echo ' id="ERR_'.$colonne['PRM_PATH'].'"';
echo ' style="display:inline-block; font-size:0.75em;"';
echo '></span>';
echo '</td>';
echo '</tr>';
}
echo '<tr>';
// cellule 'code' a saisir en creation
echo '<td style="vertical-align:top">';
echo '<textarea';
echo ' id="CNEW_' . $pParent . '"';
echo ' rows="1" cols="6"';
if ( ! isset($_POST['admin']) ) {
echo ' disabled';
}
else {
echo ' title="Saisissez ici le code a créer dans ce niveau"';
echo ' onchange="javascript:newparam(\'' . $pParent . '\');"';
echo ' onKeydown="javascript:colore_maj(\'CNEW_\',\'' . $pParent . '\');"';
echo ' onBlur="javascript:decolore_maj(\'CNEW_\',\'' . $pParent . '\');"';
echo ' ondragover="allowDrop(event)"';
echo ' ondrop="drop_on_newcode(event)"';
echo ' placeholder="+"';
}
echo '></textarea>';
echo '</td>';
// cellule 'valeur' non saisissable en creation
echo '<td style="vertical-align:top;"';
echo ' id="VCELL_' . $pParent.'"';
echo '>';
echo '<div';
echo ' id="ENEW_' . $pParent . '"';
echo ' style="display:inline-block; font-size:0.75em; vertical-align:top;"';
echo '</div>';
echo '</td>';
echo '</tr>';
echo '</table>';
echo '<td>';
break;
//------------------
//--------------------------------------------------------------------
case "MAJ":
if ( ! isset($_POST['path']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$path = $_POST['path'];
if ( ! isset($_POST['value']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$value = $_POST['value'];
$param->set($path, $value);
break;
//------------------
//--------------------------------------------------------------------
case "NEW":
if ( ! isset($_POST['path']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$path = $_POST['path'];
if ( ! isset($_POST['code']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$code = $_POST['code'];
if ( ! $param->exists($code, $path ) ) {
$param->set($code, null, $path );
}
else {
echo 'Existe déjà !';
}
break;
//------------------
//--------------------------------------------------------------------
case "DEL":
if ( ! isset($_POST['path']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$path = $_POST['path'];
$res = $param->delete($path, null, true);
if ( $res != null ) {
echo $res;
}
break;
//------------------
//--------------------------------------------------------------------
// controles avant suppression
case "CTRL_DEL":
if ( ! isset($_POST['path']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$path = $_POST['path'];
$liste = $param->liste($path, true);
$nbre = count($liste);
if ( $nbre > 0 ) {
$niveau_min = 9999;
$niveau_max = 0;
foreach ( $liste as $cle=>$valeur ) {
if ( $liste[$cle]['PRM_LEVEL'] < $niveau_min )
$niveau_min = intval( $liste[$cle]['PRM_LEVEL'] );
if ( $liste[$cle]['PRM_LEVEL'] > $niveau_max )
$niveau_max = intval( $liste[$cle]['PRM_LEVEL'] );
}
echo 'Sous ce paramètre, il y a au total ' . $nbre . " sous-paramètre(s) à supprimer";
if ( ( $niveau_max - $niveau_min ) > 0 )
echo ", sur " . ( $niveau_max - $niveau_min + 1 ) . " niveaux";
echo ".";
}
break;
//------------------
//--------------------------------------------------------------------
case "COPY":
if ( ! isset($_POST['code']) || ! isset($_POST['dest']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$code = $_POST['code'];
$dest = $_POST['dest'];
$array_dest = explode( $param->getsep(), $dest );
$liste = $param->liste($code, true );
foreach ( $liste as $cle=>$valeur ) {
$chaine = '';
}
break;
//------------------
//--------------------------------------------------------------------
case "EXPORT":
//$log = new LogMsg("nparam_action", "export", "start");
if ( ! isset($_POST['path']) || ! isset($_POST['file']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$path = $_POST['path'];
$fichier = $_POST['file'];
//$log = new LogMsg("nparam_action", "export", "path=", $path);
$liste = $param->liste($path, true );
if ( count( $liste ) > 0 ) {
// $fhd = tmpfile();
// $fichier = "param_export.txt";
$fhd = fopen ($fichier, "w");
fwrite($fhd,"Path\tParent\tCode\tValeur\tLevel\n");
foreach ( $liste as $cle=>$valeur ) {
fwrite($fhd, urlencode( $valeur['PRM_PATH'] ) . "\t");
fwrite($fhd, urlencode( $valeur['PRM_PATH_PARENT'] ) . "\t");
fwrite($fhd, urlencode( $valeur['PRM_CODE'] ) . "\t");
fwrite($fhd, urlencode( $valeur['PRM_VALUE'] ) . "\t");
fwrite($fhd, $valeur['PRM_LEVEL'] . "\n");
//echo urlencode( $valeur['PRM_PATH'] ) . "\t";
//$log = new LogMsg("nparam_action", "export", "prm_path=", $valeur['PRM_PATH']);
//echo urlencode( $valeur['PRM_VALUE'] ) . "\t";
}
// fseek($fhd, 0);
// echo fread($fhd,10000000);
fclose($fhd);
}
else {
echo "Rien a exporter pour " . $path;
}
//$log = new LogMsg("nparam_action", "export", "fin");
break;
//------------------
//--------------------------------------------------------------------
case "IMPORT":
if ( ! isset($_POST['parent']) ) {
echo 'Erreur dans les parametres recus';
die();
}
$parent = $_POST['parent'];
$fichier = "param_export.txt";
$lignes = file( $fichier );
for ( $idx = 1; $idx < count( $lignes ); $idx++ ) {
$elements = explode( "\t", $lignes[$idx] );
$param->set( urldecode( $elements[0] ), urldecode( $elements[3] ), $parent);
}
break;
//------------------
default:
echo "Action inconnue:" . $action;
die();
}
Il y a aussi une feuille de style (c'est pas mon truc alors l'aspect, hein...), 2 petit fichiers .js de functions standard et quelques images.