<?php

/**---------------------------------------------
*
* Rooty, 2018 <rooty@rooty.me>
*
*
* This software is protected by copyright, please
* read the file COPYRIGHT.
* This program is distributed in the hope that it
* will be useful, but without any warranty; without
* even the implied warranty of merchantability or
* fitness for a particular purpose. Please
* read the file LICENCE.
*
* Ce fichier contient la classe AdminNode
* @author Initiance <www.initiance.com|martial@initiance.com>
* @since 2004/06/07
* @version 0.3
* @link www.rooty.me
* @package object_coordination
* @subpackage AdminNode
* @copyright Copyright &copy; 2009-2018, Rooty
*/
if ( !defined('SYSTEM_IN') )
{
die("Hacking attempt");
}

/**
* Classe AdminNode
*
* Classe de gestion d'arborescence de Granilim
* @package object_coordination
* @subpackage AdminNode
*/
Class AdminNode extends CoordinationObj
{
/**
* @access private
*/
	function tabeCreate()
	{
		$tabPictoTabe = array("plus","cogs","minus");
		$tabTabe = array("BtnAdd","BtnModify","BtnDelete");
		$tabAction = array(array("actionAdmin"), array("updateAdmin"),array("deleteAdmin"));
		$tabUrlTabe = array(formatUrl($this->getId(), "AdminNode", "actionAdmin"),formatUrl($this->getId(), "AdminNode", "updateAdmin"),formatUrl($this->getId(), "AdminNode", "deleteAdmin"));
		printTabeAdmin("TabeB", $tabTabe, $tabUrlTabe, $tabPictoTabe, $tabAction);
		$GLOBALS['boolTab'] = true;
	}

/**
* actionAdmin:affichage de l'interface principale de gestion de l'arbre communautaire
*<P>Permet l'affichage des objets disponibles pour l'administrateur</P>
*<P>Cette interface permet de lister,modifier et gïżœer les arbres communautaires</P>
*<P>Note: # Cette methode se sert du fichier "message" AdminNode.ini</P>
*<P>      # La variable prise en compte est "nodeId" pour le noeud d'administration</P>
*<P>      # Les nom de Classe "CoordinationObj" et Methodes peuvent ïżœre traduites!!!<BR>
*              Ajouter simplement un message dansle fichier xml AdminNode portant dans Name le nom de votre classe<br>
*              (en minuscule) et le nom de votre Methode (composïżœ de nomclasse_nommethode)
*<P>
* @access public
* @return chaine chaine vide
*/
	function actionAdmin()
	{
		/* Ajout du fichier AdminNode.ini */
		addMessageFile("adminnode.ini");
		
		/* gestion du lib en fonction de la langue courante */
		$currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode();
		$defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"];
		/* -- fin Récupération des codes par defaut */
		
		mxPageTitle("actionAdminTitlePage");
		
		$arrayCallCss = array();
        $arrayCallCss[] = "data/css/bootstrap-toggle/2.2.2/bootstrap-toggle.min.css";
        mxCallCss($arrayCallCss);
        
        $arrayCallJs = array();
        $arrayCallJs[] = "data/javascript/bootstrap-toggle/2.2.2/bootstrap-toggle.min.js";
        mxCallJs($arrayCallJs);
        
        $arrayRawJs[] = "function imgPicto(){if(document.getElementById){if(document.getElementById(\"configNode\")){var obj=document.getElementById(\"template\");document.getElementById(\"pictoObject\").src=\"data/image/icons/node/\"+document.getElementById(\"configNode\").iconeN.options[(document.getElementById(\"configNode\").iconeN.selectedIndex)].value;}}else if(document.all){if(document.all[\"configNode\"]){document.all[\"pictoObject\"].src=\"data/image/icons/node/\"+document.all[\"configNode\"].iconeN.options[(document.all[\"configNode\"].iconeN.selectedIndex)].value;}}}function imgTemplate(){if(document.getElementById){if(document.getElementById(\"configNode\")){document.getElementById(\"screenTemplate\").src=\"data/template/\"+document.getElementById(\"template\").value+\"/preview.png\";}}else if(document.all){if(document.all[\"configNode\"]){var obj=document.getElementById(\"template\");document.all[\"configNode\"].screenTemplate.src=\"data/template/\"+obj.options[(obj.selectedIndex)].value+\"/preview.png\";}}}\$(document).ready(imgTemplate());";
        mxRawJs($arrayRawJs);

        /* On inclus la template (voir package.template.php) */
		withBlocPath("AdminNode", "actionadmin");

		/*On affiche les onglets d'administration*/
		$this->tabeCreate();

		/* Récupération de toutes les langues actives */
		$tab=$GLOBALS["SYSTEM_MANAGER"]["LANGUAGE"]->createLanguageList();

		/* Récupération du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		
// 		$optList=(( (isset($_POST["optList"])) && ($_POST["optList"]!="") )?$_POST["optList"]:((isset($_GET["optList"]) && ($_GET["optList"]!=""))?$_GET["optList"]:0));
// 		if($optList==0)
// 		{
// 			$checked0=False;
// 		} else {
// 			$checked0=True;
// 		}
		
// 		$GLOBALS['SYSTEM_TEMPLATE']->MxCheckerField("node_haspublic", "radio", "optList", 0, $checked0);

		/* Creation du Tree d'admin */
		$myTree			=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeId);

		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect(formatUrl($this->getId(), "AdminNode", "actionAdmin", "wrongArgument"));
				return "";
			}
		}

		$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("urlAction", formatUrl($this->getId(), "AdminNode", "execCreateAdmin"));

		# Affichage de la liste déroulante
		# Détermine le chemin des icônes
		$chemintotal = $GLOBALS['CONF_DATA_PATH']."data/image/icons/node/";

		# Lecture du dossier correspondant aux icônes
		$handle  = @opendir($chemintotal);$i=0;
		while ($file = @readdir($handle))
		{
			if($file !="" && $file !="." && $file !=".." && (substr($file, -3)== "gif" || substr($file,-3)=="jpg" || substr($file,-4)=="jpeg" || substr($file,-3)=="png"))
			{
				$tabIcone[$file]=$file;
			}
		}
		@closedir($handle);
		asort($tabIcone);
		$GLOBALS['SYSTEM_TEMPLATE']->MxSelect("icone", "iconeN", '', $tabIcone, 'Image de l\'espace', '', 'id="iconeN"', "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeIcon"), ENT_QUOTES)."\"", getMessage("txtNodeIcon"));

		/* Affichage des templates */
		# Affichage de la liste déroulante
		# Détermine le chemin des icônes
		$chemintotal = $GLOBALS['SYSTEM_TEMPLATE_PATH'];
		$tabTemplate    = array();
// 		$tabTpl=( is_array($this->getData("template")) )?$this->getData("template"):array();
// 		var_dump($tabTpl);
		# Lecture du dossier correspondant aux icônes
		$handle      = @opendir($chemintotal);
		while ($file = @readdir($handle))
		{
// 			if (in_array($file, $tabTpl ) || count($tabTpl)==0 )
// 			{
				if($file !="" && $file !="." && $file !=".." && (strpos("CACHE",$file, 0)===FALSE) && (strpos("cache",$file, 0)===FALSE) && (strpos(".SVN",$file, 0)===FALSE) && (strpos(".CVS",$file, 0)===FALSE) && is_dir($chemintotal.$file))
					{
						$tabTemplate[$file]=$file;
					}
// 			}
		}
		@closedir($handle);
		asort($tabTemplate);
// 		reset($tabTemplate);

		$GLOBALS['SYSTEM_TEMPLATE']->MxSelect("template", "template_name", '', $tabTemplate, '', '', 'id="template"', "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeTemplate"), ENT_QUOTES)."\"", getMessage("txtNodeTemplate"));
		$GLOBALS["SYSTEM_TEMPLATE"]->MxImage("screenTemplate", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."preview.png", getMessage("PreviewTemplate"));
		$GLOBALS["SYSTEM_TEMPLATE"]->MxImage("pictoObject", $GLOBALS['CONF_DATA_PATH']."data/image/icons/node/defaultnode.gif", getMessage("PreviewPicto"));
		$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("ctype", "text", "node_ctype", "", "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeType"), ENT_QUOTES)."\"", getMessage("txtNodeType"));
		$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("ctypereg", "text", "node_ctypereg", "", "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeTypereg"), ENT_QUOTES)."\"", getMessage("txtNodeTypereg"));
		$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("domain", "text", "node_domain", "", "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeDomain"), ENT_QUOTES)."\"", getMessage("txtNodeDomain"));
		/* fin template */



		// --> recuperation du treeNode correspondant au noeud
		$tabTreeNode[0]=$myTree;		//--> treeNodeUnique....
		printTabTreeNode($tabTreeNode, 0, "NODE", "node_id", false, "", "", "class=\"form\" required=\"true\" title=\"".htmlspecialchars(getMessage("TxtNodeIn"), ENT_QUOTES)."\"");
		/* -- Fin d'affichage des noeuds d'ajout */

		for ($i=0; $i<count($tab);$i++)
		{
			$lib=$tab[$i]->getLibelle($currentCode);
			if ($lib=="")
			{
				$lib=$tab[$i]->getLibelle($defaultCode);
			}
			$img =$tab[$i]->getIcone();
			$GLOBALS['SYSTEM_TEMPLATE']->MxImage("blocName.pictoLanguage", $img);
			$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("blocName.nameInput", "text", "nameLanguage".$tab[$i]->getCode(), "", "class=\"form\" required=\"true\" title=\"".htmlspecialchars(getMessage("txtNodeName"), ENT_QUOTES)."\"", getMessage("txtNodeName"));
			$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("blocName", "loop");
		}
		/* Sortie de la Template */
		exitBloc();
		return "";
	}

/**
* execCreateAdmin : Enregistre le groupe dans la Bd...
*<P>Remarque: l'objet doit recevoir ses args en POST</P>
*<P>Note: cette methode se sert de $GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]</P>
* @access public
* @return chaine code Message
*/
	function execCreateAdmin()
	{
		$tabCodeLangue=array();
		$isValid=true;
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$node_id	=( (isset($_POST["node_id"])) && ($_POST["node_id"]!="") )?$_POST["node_id"]:0;
		$Node=new Node();
		$Node->SetTemplate( ((isset($_POST["template_name"]))?(htmlentitiesconv($_POST["template_name"])):"") );
		$Node->SetIcone( ((isset($_POST["iconeN"]))?(htmlentitiesconv($_POST["iconeN"])):"") );
		$Node->setCType( ( (isset($_POST["node_ctype"]) && ($_POST["node_ctype"]!="") )?($_POST["node_ctype"]):"default") );
		$Node->setCTypereg( ((isset($_POST["node_ctypereg"]))?($_POST["node_ctypereg"]):"") );
		$Node->setDomain( ((isset($_POST["node_domain"]))?($_POST["node_domain"]):"") );
		$Node->setHasPublic( ((isset($_POST["node_haspublic"]))?($_POST["node_haspublic"]):'off') );
// 		$Node->setMailNode( ((isset($_POST["user_mail"]))?($_POST["user_mail"]):"") );
		
		# Variables de configuration de l'objet
		/* Pour le nom de l'objet... */
		while (list($key, $val) = each($_POST)) {
			if (!(strpos($key, "nameLanguage")===false))							// on a trouvïżœun nom pour une langue
			{
				if ( $val!="" )
				{
					$tabCodeLangue[]=str_replace("nameLanguage", "",$key);					// on stocke le tableau des codes pour test
					// on ajoute le lib
					$Node->setLibelle(str_replace("nameLanguage", "",$key), addslashes($val));
				}
			}
		}
		if ( !(in_array($GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"], $tabCodeLangue)) )
		{
			$isValid=false;
		}
		if ($node_id!=0)
		{
			$Node->setIdPere($node_id);
		}else{
			$isValid=false;
		}
		$Node->setId("");

		if ($isValid==true)
		{
			$Group=$GLOBALS["SYSTEM_MANAGER"]["NODE"]->insertInstance($Node);

			$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE_CACHE"]->emptyCache();
			$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_NODE_CACHE"]->emptyCache();

			systemRedirect( formatUrl($this->getId(), "AdminNode", "actionAdmin", "msgSave")."&nodeId=".$Node->getId() );
			return "msgSave";
		}else{
			systemRedirect(formatUrl($this->getId(), "AdminNode", "actionAdmin", "wrongArgument"));
			return "wrongArgument";
		}
	}

/**
* updateAdmin : fonction de mise à jour des groupes
* @access public
* @return chaine code message
*/
	function updateAdmin()
	{
	/* Ajout du fichier AdminNode.ini */
		addMessageFile("adminnode.ini");
		
		/* gestion du lib en fonction de la langue courante */
		$currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode();
		$defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"];
		/* -- fin rïżœupïżœation des codes par defaut */
		
		mxPageTitle("updateAdminTitlePage");
		
		$arrayCallCss = array();
        $arrayCallCss[] = "data/css/bootstrap-toggle/2.2.2/bootstrap-toggle.min.css";
        mxCallCss($arrayCallCss);
        
        $arrayCallJs = array();
        $arrayCallJs[] = "data/javascript/bootstrap-toggle/2.2.2/bootstrap-toggle.min.js";
        mxCallJs($arrayCallJs);
        
        $arrayRawJs[] = "function imgPicto(){if(document.getElementById){if(document.getElementById(\"modifNode\")){var obj=document.getElementById(\"template\");document.getElementById(\"pictoObject\").src=\"data/image/icons/node/\"+document.getElementById(\"modifNode\").iconeN.options[(document.getElementById(\"modifNode\").iconeN.selectedIndex)].value;}}else if(document.all){if(document.all[\"modifNode\"]){document.all[\"pictoObject\"].src=\"data/image/icons/node/\"+document.all[\"modifNode\"].iconeN.options[(document.all[\"modifNode\"].iconeN.selectedIndex)].value;}}}function imgTemplate(){if(document.getElementById){if(document.getElementById(\"modifNode\")){document.getElementById(\"screenTemplate\").src=\"data/template/\"+document.getElementById(\"template\").value+\"/preview.png\";}}else if(document.all){if(document.all[\"modifNode\"]){var obj=document.getElementById(\"template\");document.all[\"modifNode\"].screenTemplate.src=\"data/template/\"+obj.options[(obj.selectedIndex)].value+\"/preview.png\";}}}\$(document).ready(imgTemplate());";
        mxRawJs($arrayRawJs);

		/* On inclus la template (voir package.template.php) */
		withBlocPath("AdminNode", "updateadmin");

		/*On affiche les onglets d'administration*/
		$this->tabeCreate();

		/* Récupération de toutes les langues actives */
		$tab=$GLOBALS["SYSTEM_MANAGER"]["LANGUAGE"]->createLanguageList();

		/* Récupération du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$node_Id1=((isset($_POST["node_Id1"]) && is_numeric($_POST["node_Id1"]))?$_POST["node_Id1"]:((isset($_GET["node_Id1"]) && is_numeric($_GET["node_Id1"]))?$_GET["node_Id1"]:Null));

		/* Creation du Tree d'admin */
		$myTree	=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeId);

		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect(formatUrl($this->getId(), "AdminNode", "actionAdmin", "wrongArgument"));
				return "";
			}
		}

		# Affichage de la liste déroulante
		# Détermine le chemin des icones
		$chemintotal = $GLOBALS['CONF_DATA_PATH']."data/image/icons/node/";

		/* -- Affichage des Group d'ajout */
//		$tabTreeGroup=$GLOBALS["SYSTEM_CONTROL"]->arrayOfAdministrableGroup($nodeId);
//		PrintTabTreeGroup($tabTreeGroup, $groupId, "GROUP");
		/* -- Fin Affichage des groupes d'ajout */
		$tabTreeNode[0]=$myTree;
		printTabTreeNode($tabTreeNode, $node_Id1, "NODE", "node_Id1", false);

		if ($node_Id1!=NULL)
		{
			//On load le Noeud
			$Node=$GLOBALS["SYSTEM_MANAGER"]["NODE"]->createInstance($node_Id1);
			
			$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("urlAction", formatUrl($this->getId(), "AdminNode", "execUpdateAdmin"));
			
			$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("nodeHiddenUpdate", $node_Id1);

			// --> recuperation du treeNode correspondant au noeurd
			//--> treeNodeUnique....
			/* -- Fin d'affichage des noeud d'ajout */

			# Lecture du dossier correspondant aux icones
			$handle  = @opendir($chemintotal);
			while ($file = @readdir($handle))
			{
				if($file !="" && $file !="." && $file !=".." && (substr($file, -3)== "gif" || substr($file,-3)=="jpg" || substr($file,-4)=="jpeg" || substr($file,-3)=="png"))
				{
					$tabIcone[$file]=$file;
				}
			}
			@closedir($handle);
			asort($tabIcone);
// 			var_dump($Node->getIcone());
			if ( $Node->getIcone() == "") $nodeIcone = "defaultnode.gif"; else $nodeIcone = $Node->getIcone();
// 			var_dump($nodeIcone);
			$GLOBALS['SYSTEM_TEMPLATE']->MxSelect("ToHidde".".icone", "iconeN", $nodeIcone, $tabIcone, '', '', 'id="iconeN"', "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeIcon"), ENT_QUOTES)."\"", getMessage("txtNodeIcon"));

			
			/* Affichage des templates */
			# Affichage de la liste dïżœoulante
			# Détermine le chemin des icones
			$chemintotal = $GLOBALS['SYSTEM_TEMPLATE_PATH'];
			$tabTemplate    = array();
// 			$tabTpl=( is_array($this->getData("template")) )?$this->getData("template"):array();
			# Lecture du dossier correspondant aux icones
			$handle      = @opendir($chemintotal);
			while ($file = @readdir($handle))
			{
// 				if (in_array($file, $tabTpl ) || count($tabTpl)==0 )
// 				{
					if($file !="" && $file !="." && $file !=".." && (strpos("CACHE",$file, 0)===FALSE) && (strpos("cache",$file, 0)===FALSE) && (strpos(".SVN",$file, 0)===FALSE) && (strpos(".CVS",$file, 0)===FALSE) && is_dir($chemintotal.$file))
					{
						$tabTemplate[$file]=$file;
					}
// 				}
			}
			@closedir($handle);
			asort($tabTemplate);
// 			var_dump($tabTpl);
			reset($tabTemplate);

			$GLOBALS['SYSTEM_TEMPLATE']->MxSelect("ToHidde.template", "template_name", $Node->getTemplate(), $tabTemplate, '', '', 'id="template"', "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeTemplate"), ENT_QUOTES)."\"", getMessage("txtNodeTemplate"));
			$GLOBALS["SYSTEM_TEMPLATE"]->MxImage("ToHidde.pictoObject", $GLOBALS['CONF_DATA_PATH']."data/image/icons/node/".$nodeIcone, getMessage("PreviewPicto"));
			$GLOBALS["SYSTEM_TEMPLATE"]->MxImage("ToHidde.screenTemplate", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."preview.png", getMessage("PreviewTemplate"));
			$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("ToHidde.ctype", "text", "node_ctype", htmlentitiesconv($Node->getCType()), "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeType"), ENT_QUOTES)."\"", getMessage("txtNodeType"));
			$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("ToHidde.ctypereg", "text", "node_ctypereg", htmlentitiesconv($Node->getCTypereg()), "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeTypereg"), ENT_QUOTES)."\"", getMessage("txtNodeTypereg"));
			$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("ToHidde.domain", "text", "node_domain", htmlentitiesconv($Node->getDomain()), "class=\"form\" title=\"".htmlspecialchars(getMessage("txtNodeDomain"), ENT_QUOTES)."\"", getMessage("txtNodeDomain"));
			$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.node_haspublic_value", ($Node->getHasPublic()!="on")?"":" checked");
			/* fin template */
			
			for ($i=0; $i<count($tab);$i++)
			{
				$lib=$tab[$i]->getLibelle($currentCode);
				if ($lib=="")
				{
					$lib=$tab[$i]->getLibelle($defaultCode);
				}
				
				$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.NodeName",$Node->getLibelle($tab[$i]->getCode() ));
				$GLOBALS['SYSTEM_TEMPLATE']->MxImage("ToHidde.blocName.pictoLanguage", $tab[$i]->getIcone());
				$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("ToHidde.blocName.nameInput", "text", "nameLanguage".$tab[$i]->getCode(), htmlentitiesconv($Node->getLibelle($tab[$i]->getCode())), "class=\"form\" required=\"true\" title=\"".htmlspecialchars(getMessage("txtNodeName"), ENT_QUOTES)."\"", getMessage("txtNodeName"));
				$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde.blocName", "loop");
			}

			// Pour déplacer le Groupe
			$tabMove=array();
			$k=0;

			for ($i=0; $i<count($tabTreeNode); $i++)
			{
				// si le Noeud est dans l'arbre on change l'arbre
				if (in_array($Node->getId(),$tabTreeNode[$i]->getSonArray()))
				{
					// on Fait un truc un peu exotique... on vide le tabson
					$currentTree=$tabTreeNode[$i];
					$currentSon=$currentTree->getSonOfIdPereArray($Node->getId());	// Tous les Fils de l'id selectionné
					for ($i=0; $i<count($currentTree->tabSon); $i++)
					{
						if ( (in_array($currentTree->tabSon[$i]->getId(), $currentSon)) || ($currentTree->tabSon[$i]->getId()==$Node->getId()) )
						{
							unset($currentTree->tabSon[$i]);
						}
					}
					$currentTree->tabSon=array_values($currentTree->tabSon);
					$tabMove[$k]=$currentTree;
					$k++;
				}else if (in_array($Node->getId(),$tabTreeNode[$i]->getFatherArray()) || $Node->getId()==$tabTreeNode[$i]->getId())
				{
					// on ignore le group action??
				}else{
					$tabMove[$k]=$tabTreeNode[$i];
					$k++;
				}
			}

			if (count($tabMove)==0)
			{
				systemRedirect(formatUrl($this->getId(), "AdminNode", "updateAdmin", "enableNode"));
				return "enableGroup";
			}
			printTabTreeNode($tabMove, $Node->getIdPere(), "ToHidde.NODE", "node_Id2");
		}else{
			$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("urlAction", formatUrl($this->getId(), "AdminNode", "updateAdmin"));
			$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde", "delete");
		}
		/* Sortie de la Template */
		exitBloc();
		return "";
	}

/**
* execUpdateAdmin : fonction de mise à jour des groupes(traitement)
* @access public
* @return chaine code message
*/
	function execUpdateAdmin()
	{
		$tabCodeLangue=array();
		$isValid=true;
		
// 		var_dump($_POST);
// 		exit(0);

		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();

		$node_id_pere	=( (isset($_POST["node_Id2"])) && ($_POST["node_Id2"]!="") )?$_POST["node_Id2"]:0;
		$node_id	=( (isset($_POST["node_Id1"])) && ($_POST["node_Id1"]!="") )?$_POST["node_Id1"]:0;

		if ($node_id==0)
		{
			systemRedirect(formatUrl($this->getId(), "AdminNode", "actionAdmin", "wrongArgument"));
			return "wrongArgument";
		}

		$Node=$GLOBALS["SYSTEM_MANAGER"]["NODE"]->createInstance($node_id);
		$Node->setIcone( ((isset($_POST["iconeN"]))?(htmlentitiesconv($_POST["iconeN"])):"") );
		$Node->setTemplate( ((isset($_POST["template_name"]))?(htmlentitiesconv($_POST["template_name"])):"") );
		$Node->setCType( ((isset($_POST["node_ctype"]))?(htmlentitiesconv($_POST["node_ctype"])):"default") );
		$Node->setCTypereg( ((isset($_POST["node_ctypereg"]))?(htmlentitiesconv($_POST["node_ctypereg"])):"") );
		$Node->setDomain( ((isset($_POST["node_domain"]))?(htmlentitiesconv($_POST["node_domain"])):"") );
		$Node->setHasPublic( ((isset($_POST["node_haspublic"]))?($_POST["node_haspublic"]):'off') );
// 		$Node->setMailNode( ((isset($_POST["user_mail"]))?($_POST["user_mail"]):"") );

// 		var_dump($Node);
// 		exit(0);

		# Variables de configuration de l'objet
		/* Pour le nom de l'objet... */
		while (list($key, $val) = each($_POST)) {
			if (!(strpos($key, "nameLanguage")===false))
			// on a trouvïżœun nom pour une langue
			{
				if ( $val!="" )
				{
					$tabCodeLangue[]=str_replace("nameLanguage", "",$key);
					// on stocke le tableau des codes pour test
					// on ajoute le lib
					$Node->setLibelle(str_replace("nameLanguage", "",$key), $val);
				}
			}
		}

		if ( !(in_array($GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"],$tabCodeLangue)) )
		{
			$isValid=false;
		}
		$emptyCache=false;
		// Pour le cas une seule racine du site!!!
		if ($node_id_pere!=0)
		{
			$MyTree=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($node_id);
			// Son pere ne peu pas ïżœre un de ses fils ou lui mïżœe !!!
			if ( (in_array($node_id_pere, $MyTree->getSonArray())) && ($MyTree->getId()!=$node_id_pere) )
			{
				$isValid=false;
			}else{
				$emptyCache=($Node->getIdPere()!=$node_id_pere)?true:false;
				$Node->setIdPere($node_id_pere);
			}
		}else{
			$isValid=false;
		}
		$Node->setId($node_id);

		if ($isValid==true)
		{
			$Node=$GLOBALS["SYSTEM_MANAGER"]["NODE"]->updateInstance($Node);

			if ($emptyCache==true)
			{
				$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE_CACHE"]->emptyCache();
				$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_NODE_CACHE"]->emptyCache();
			}
			$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP_CACHE"]->emptyCache();
			$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE_CACHE"]->emptyCache();
			$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_GROUP_CACHE"]->emptyCache();
			$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_NODE_CACHE"]->emptyCache();
			if( DATA_ACCES_CACHE_PERMISSION )
				$GLOBALS["SYSTEM_MANAGER"]["PERMISSION_CACHE"]->emptyCache();

			systemRedirect( formatUrl($this->getId(), "AdminNode", "updateAdmin", "msgSave")."&node_Id1=".$Node->getId() );
			return "msgSave";
		}else{
			systemRedirect(formatUrl($this->getId(), "AdminNode", "updateAdmin", "wrongArgument"));
			return "wrongArgument";
		}
	}

/**
* deleteAdmin : fonction de suppression des groupes
* @access public
* @return chaine code message
*/
	function deleteAdmin()
	{
		/* Ajout du fichier AdminNode.ini */
		addMessageFile("adminnode.ini");
		
		/* gestion du lib en fonction de la langue courante */
		$currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode();
		$defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"];
		/* -- fin Récupération des codes par defaut */
		
		$arrayRawJs[] = "function SelectNode(){if(document.getElementById){if(document.getElementById(\"RecapNode\")){document.getElementById(\"RecapNode\").action=document.getElementById(\"RecapNode\").urlUpdate.value;document.getElementById(\"RecapNode\").submit();}}else if(document.all){if(document.all[\"RecapNode\"]){document.all[\"RecapNode\"].action=document.all[\"RecapNode\"].urlUpdate.value;document.all[\"RecapNode\"].submit();}}}";
        mxRawJs($arrayRawJs);
		
		/* On inclus la template (voir package.template.php) */
		withBlocPath("AdminNode", "deleteAdmin");

		/*On affiche les onglets d'administration*/
		$this->tabeCreate();

		/* Récupération du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$node_id=((isset($_POST["node_id"]) && is_numeric($_POST["node_id"]))?$_POST["node_id"]:((isset($_GET["nodeId"]) && is_numeric($_GET["nodeId"]))?$_GET["nodeId"]:Null));

		/* Creation du Tree d'admin */
		$myTree			=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeId);

		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect(formatUrl($this->getId(), "AdminNode", "actionAdmin", "wrongArgument"));
				return "";
			}
		}

		$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("urlHiddenUpdate", formatUrl($this->getId(), "AdminNode", "deleteAdmin"));

		# Affichage de la liste déroulante
		# Détermine le chemin des icones
		$chemintotal = $GLOBALS['CONF_DATA_PATH']."data/image/icons/node/";
			
		$tabTreeNode[0]=$myTree;
		printTabTreeNode($tabTreeNode, $node_id, "NODE", "node_id", false);

		if ($node_id!=NULL)
		{
            if(count($tabTreeNode) > 0 )
            {
                for ($i=0; $i<count($tabTreeNode); $i++)
                {
                    $GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_OBJECT.Object", getMessage("Object") );	
                    $GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_NODE.Node", getMessage("Node") );	
                    $GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_RIGHT.Right", getMessage("Right") );
                    if ($tabTreeNode[$i]->getId()==$node_id)
                    {
                        systemRedirect(formatUrl($this->getId(), "AdminNode", "deleteAdmin", "enableDeleteNode"));
                        return "enableDeleteNode";
                    }
                }

                //On load le Group
                $GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("NodeHiddenUpdate", $node_id);
                $Node=$GLOBALS["SYSTEM_MANAGER"]["NODE"]->createInstance($node_id);

                $GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("urlAction", formatUrl($this->getId(), "AdminNode", "execDeleteAdmin"));

                $lib=$Node->getLibelle($currentCode);
                if ($lib=="")
                    $lib=$Node->getLibelle($defaultCode);

                $GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.NodeName", $lib );
                $GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.NodeName", $lib );
                $GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.TxtDeleteNode", getMessage("TxtDeleteNode"));
                
                /* Affichage des Dependances */
                $MyTreeNode=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($node_id);
                // Pour l'objet en Lui MM
                $this->PrintNodeDependancy($Node->getId(), $lib);
                $tab=$MyTreeNode->getSonArray();
                for($i=0; $i<count($tab); $i++)
                {
                    $GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_OBJECT.Object", getMessage("Object") );	
                    $GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_NODE.Node", getMessage("Node") );	
                    $GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_RIGHT.Right", getMessage("Right") );
                    $this->PrintNodeDependancy($tab[$i], $MyTreeNode->getLibelleFromNode($tab[$i], $defaultCode) );
                }
            }
		}else{
			$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("urlAction", formatUrl($this->getId(), "AdminNode", "deleteAdmin"));
			$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde", "delete");
		}

		/* Sortie de la Template */
		exitBloc();

		return "";

	}
/**
* @access public
* @param entier id du noeud
* @param chaine nom du noeud
* @return chaine chaine html
*/
	function printNodeDependancy($nodeId, $NodeName)
	{
		/* gestion du lib en fonction de la langue courante */
		$currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode();
		$defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"];
		/* -- fin Récupération des codes par defaut */

		// Recuperation des association Utilisateur/Node
		$tabNodeGroupUser		=$GLOBALS["SYSTEM_MANAGER"]["NODE_GROUP_USER"]->getInstanceFromNodeId($nodeId);
		$tabRight			=$GLOBALS["SYSTEM_MANAGER"]["RIGHT"]->getInstanceFromNodeId($nodeId);
		$tabObj				=$GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]->getInstanceFromNodeId($nodeId);

		$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_NODE.TxtDeleteNode", getMessage("TxtDeleteNode") );
		$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_NODE.NodeName", $NodeName );

		if (count($tabNodeGroupUser)!=0)
		{
			for ($i=0; $i<count($tabNodeGroupUser); $i++)
			{
				if ($tabNodeGroupUser[$i]->getGroupId()!=0)
				{
					$NodeGroupUser	=$GLOBALS["SYSTEM_MANAGER"]["GROUP"]->createInstance($tabNodeGroupUser[$i]->getGroupId());
					$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_NODE.DELETE_NODE.TxtDeleteEntryNode", getMessage("TxtDeleteEntryNode") );
					$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_NODE.DELETE_NODE.NodeName", $NodeGroupUser->getLibelle($defaultCode) );
					$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde.DELETE.SECTION_NODE.DELETE_NODE", "loop" );
				}else if($tabNodeGroupUser[$i]->getUserId()!=0){
					$NodeGroupUser	=$GLOBALS["SYSTEM_MANAGER"]["USER"]->createInstance($tabNodeGroupUser[$i]->getUserId());
					$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_NODE.DELETE_NODE.TxtDeleteEntryNode", getMessage("TxtDeleteEntryNode") );
					$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_NODE.DELETE_NODE.NodeName", $NodeGroupUser->getFirstName() );
					$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde.DELETE.SECTION_NODE.DELETE_NODE", "loop" );
				}
			}
		}else{
			$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde.DELETE.SECTION_NODE", "delete" );
		}

		if (count($tabRight)!=0)
		{
			for ($i=0; $i<count($tabRight); $i++)
			{
				$Obj	=$GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]->createInstance($tabRight[$i]->getObjectId());
				$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_RIGHT.DELETE_RIGHT.TxtDeleteRight", getMessage("TxtDeleteRight") );
				$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_RIGHT.DELETE_RIGHT.ObjectName", $Obj->getName($defaultCode) );
				$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde.DELETE.SECTION_RIGHT.DELETE_RIGHT", "loop" );
			}
		}else{
			$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde.DELETE.SECTION_RIGHT", "delete" );
		}

		if (count($tabObj)!=0)
		{
			for ($i=0; $i<count($tabObj); $i++)
			{
				$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_OBJECT.DELETE_OBJECT.TxtDeleteObject", getMessage("TxtDeleteObject") );
				$GLOBALS['SYSTEM_TEMPLATE']->MxText("ToHidde.DELETE.SECTION_OBJECT.DELETE_OBJECT.ObjectName", $tabObj[$i]->getName($defaultCode) );
				$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde.DELETE.SECTION_OBJECT.DELETE_OBJECT", "loop" );
			}
		}else{
			$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde.DELETE.SECTION_OBJECT", "delete" );
		}

		$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("ToHidde.DELETE", "loop" );
	}

/**
* deleteAdmin : fonction de suppression des groupes(traitement)
* @access public
* @return chaine code message
*/
	function execDeleteAdmin()
	{
		/* Récupération du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$node_id=((isset($_POST["node_id"]) && is_numeric($_POST["node_id"]))?$_POST["node_id"]:((isset($_GET["nodeId"]) && is_numeric($_GET["nodeId"]))?$_GET["nodeId"]:Null));

		/* Creation du Tree d'admin */
		$myTree			=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeId);

		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect(formatUrl($this->getId(), "AdminNode", "actionAdmin", "wrongArgument"));
				return "";
			}
		}
		/* gestion du lib en fonction de la langue courante */
		$currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode();
		$defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"];
		/* -- fin Récupération des codes par defaut */
		$tabTreeNode[0]=$myTree;

		if ($node_id!=NULL)
		{
			for ($i=0; $i<count($tabTreeNode); $i++)
			{
				if ($tabTreeNode[$i]->getId()==$node_id)
				{
					systemRedirect(formatUrl($this->getId(), "AdminNode", "deleteAdmin", "enableDeleteNode"));
					return "enableDeleteNode";
				}
			}

			//On load le Group
			$Node=$GLOBALS["SYSTEM_MANAGER"]["NODE"]->createInstance($node_id);
			$lib=$Node->getLibelle($currentCode);
			if ($lib=="")
				$lib=$Node->getLibelle($defaultCode);

			/* Affichage des Dependances */
			$MyTreeNode=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($node_id);

			// Pour l'objet en Lui MM
			$this->deleteNodeDependancy($Node->getId());
			$tab=$MyTreeNode->getSonArray();
			for($i=0; $i<count($tab); $i++)
			{
				$this->deleteNodeDependancy($tab[$i]);
			}
			$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP_CACHE"]->emptyCache();
			$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE_CACHE"]->emptyCache();
			$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_GROUP_CACHE"]->emptyCache();
			$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_NODE_CACHE"]->emptyCache();
			$GLOBALS["SYSTEM_MANAGER"]["PERMISSION_CACHE"]->emptyCache();
			systemRedirect(formatUrl($this->getId(), "AdminNode", "deleteAdmin", "msgDelete"));
			return "";
		}else{
			systemRedirect(formatUrl($this->getId(), "AdminGroup", "deleteAdmin", "wrongArgument"));
			return "wrongArgument";
		}
		return "";
	}

/**
* deleteAdmin : fonction de suppression des noeuds
* @access public
* @param entier id du noeud
* @return chaine chaine vide
*/
	function deleteNodeDependancy($nodeId)
	{
		// Recuperation des association Utilisateur/Node
		$Node				=$GLOBALS["SYSTEM_MANAGER"]["NODE"]->createInstance($nodeId);
		$tabNodeGroupUser		=$GLOBALS["SYSTEM_MANAGER"]["NODE_GROUP_USER"]->getInstanceFromNodeId($nodeId);
		$tabRight			=$GLOBALS["SYSTEM_MANAGER"]["RIGHT"]->getInstanceFromNodeId($nodeId);
		$tabObj				=$GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]->getInstanceFromNodeId($nodeId);

		for ($i=0; $i<count($tabNodeGroupUser); $i++)
		{
			$tabNodeGroupUser[$i]=$GLOBALS["SYSTEM_MANAGER"]["NODE_GROUP_USER"]->deleteInstance($tabNodeGroupUser[$i]);
		}

		for ($i=0; $i<count($tabRight); $i++)
		{
			$tabRight[$i]=$GLOBALS["SYSTEM_MANAGER"]["RIGHT"]->deleteInstance($tabRight[$i]);
		}

		for ($i=0; $i<count($tabObj); $i++)
		{
			$tabObj[$i]->__execDeleteObject(1, $nodeId, array() );
		}
		$Node				=$GLOBALS["SYSTEM_MANAGER"]["NODE"]->deleteInstance($Node);

	}

#######################################################################################################################################
### Parametrage de l'instance!!!
#######################################################################################################################################
#### On surcharge
###### ici les methodes de CoordinationObj pour avoir un form permettant de saisir la racine de fonctionnement de l'objet
/**
* Surchage de la methode de coordinationObj
* @param chaine url pour le form
* @param chaine url pour le form de retour
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function configurePrint($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{
		addMessageFile("Object.ini");

		$end=parent::configurePrint($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass);

		// On affiche en plus la liste des noeud et des groupes paramétrables
		/* Récupération du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$tabForbidden=(is_array($this->getData("tabForbidden")))?$this->getData("tabForbidden"):array();
		$groupId=($this->getData("groupId")!="")?$this->getData("groupId"):1; 		/* Tous les Groupes par dïżœaut */
		$tabTemplate=($this->getData("template")!="")?$this->getData("template"):$GLOBALS["OBJ_INI_VARS"]["template"];

		/* Creation du Tree d'admin */
		$myTree			=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeIdPass);
		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect($urlReturn."&msg=WrongArgument");
				return "WrongArgument";
			}
		}

		$tabTreeNode[0]=$myTree;		//--> treeNodeUnique....
		printTabTreeNode($tabTreeNode, $nodeId, "NODE_ADMIN", "node_admin_id");
		/* -- Fin d'affichage des noeud d'ajout */

		/* Affichage des templates */
		# Affichage de la liste déroulante
		# Détermine le chemin des icones
		$chemintotal = $GLOBALS['SYSTEM_TEMPLATE_PATH'];
		$tabIcone    = array();
		$tabTpl=(isset($GLOBALS["OBJ_INI_VARS"]["template"]) && is_array($GLOBALS["OBJ_INI_VARS"]["template"]))?$GLOBALS["OBJ_INI_VARS"]["template"] : array();
		# Lecture du dossier correspondant aux icones
		$handle      = @opendir($chemintotal);
		while ($file = @readdir($handle))
		{
			if (in_array($file, $tabTpl ) || count($tabTpl)==0 )
			{
				if($file !="" && $file !="." && $file !=".." && (strpos("CACHE,cache",$file)===FALSE) && is_dir($chemintotal.$file))
				{
					$tabIcone[$file]=$file;
				}
			}
		}
		@closedir($handle);
		$GLOBALS['SYSTEM_TEMPLATE']->MxSelect("TEMPLATE_ADMIN", "template", $tabTemplate, $tabIcone, '', 8, ' onchange="javascript:imgTemplate();" id="TEMPLATE_ADMIN"');
		/* Fin Affichage des templates */

		return $end;
	}

/**
* __createObject : retourne la chaine d'affichage de création de l'objet (/défaut)
* @param chaine url pour le form
* @param chaine url pour le form de retour
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function __createObject($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{

		withBlocPath("AdminNode", "configuration");

		$end=$this->configurePrint($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass);

		exitBloc();
		return $end;
	}

/**
* __execCreateObject : retourne la chaine d'affichage de création de l'objet (/traitement)
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function __execCreateObject($groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{
		if (isset($_POST["group_admin_id"]))
			$this->setData("groupId", $_POST["group_admin_id"]);
		else
			$this->setData("groupId", nid());

		if (isset($_POST["node_admin_id"]))
			$this->setData("nodeId", $_POST["node_admin_id"]);
		else
			$this->setData("nodeId", nid());
		if ( is_array($_POST["template"]) )
		{
			$tabTemplate=$_POST["template"];
		}else{
			$tabTemplate=$GLOBALS["OBJ_INI_VARS"]["template"];
		}
		$this->setData("template", $tabTemplate);

		$end=parent::__execCreateObject($groupIdPass, $nodeIdPass, $tabForbiddenPass);
		return $end;
	}

/**
* __execupdateObject : modifie l'objet (/traitement)
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function __execUpdateObject($groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{
		if (isset($_POST["group_admin_id"]))
			$this->setData("groupId", $_POST["group_admin_id"]);
		else
			$this->setData("groupId", 1);

		if (isset($_POST["node_admin_id"]))
			$this->setData("nodeId", $_POST["node_admin_id"]);
		else
			$this->setData("nodeId", 1);
		if ( is_array($_POST["template"]) )
		{
			$tabTemplate=$_POST["template"];
		}else{
			$tabTemplate=$GLOBALS["OBJ_INI_VARS"]["template"];
		}
		$this->setData("template", $tabTemplate);
		
		$end=parent::__execUpdateObject($groupIdPass, $nodeIdPass, $tabForbiddenPass);
		return $end;
	}

/**
* __updateObject : surchage updateObject de l'objet de coordination
* @param chaine url pour le form
* @param chaine url pour le form de retour
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function __updateObject($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{
		$arrayRawJs[] = "function imgTemplate(){if (document.getElementById){if (document.getElementById(\"TEMPLATE_ADMIN\")){var obj=document.getElementById(\"TEMPLATE_ADMIN\");document.screenTemplate.src=\"data/template/\"+obj.options[(obj.selectedIndex)].value+\"/preview.png\";}}else if(document.all){if(document.all[\"TEMPLATE_ADMIN\"]){var obj=document.all[\"TEMPLATE_ADMIN\"];document.screenTemplate.src=\"data/template/\"+obj.options[(obj.selectedIndex)].value+\"/preview.png\";}}}imgTemplate();";
		mxRawJs($arrayRawJs);
	
		withBlocPath("AdminNode", "configuration");
		$end=$this->configurePrint($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass);
		exitBloc();
		return $end;
	}
}
?>
