* * * 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. * * * Fichier package.template.php * Ce fichier contient des methodes de gestion de la template principale+ affcihage d'éléments de saisie * * @author Rooty * @since 2018/07/06 * @link www.rooty.me * @version 0.3 * @package package * @subpackage template * @copyright Copyright © 2009-2018, Rooty */ if ( !defined('SYSTEM_IN') ) { die("Hacking attempt"); } /** * Fonction withBlocPath *

Remplace un bloc de la template principale par un autre fichier de template
* le chemin du fichier sera donné comme suit $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR'].$type."/".$classe."/".$action.".mxt" * seul la classe et l'action sont obligatoires *

* @param chaine nom de la classe * @param chaine nom de la methode (fichier sans le mxt) * @param chaine type d'objet (/default object de coordination) * @param chaine nom du bloc à remplacer (/default DATA) * @return booleen */ function withBlocPath ($classe, $action, $type="object_coordination", $bloc="DATA") { $path=$GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR'].$type."/".strtolower($classe)."/".strtolower($action).".mxt"; if ( $GLOBALS["SYSTEM_TEMPLATE"]->isMxBloc($bloc) ) { $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc($bloc, "appe", $path); $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath($bloc, "relative"); return true; }else{ return false; } } /** *function exitBloc : permet de sortir de revenir à la racine de modelixe pour la Template principale... * @return booleen */ function exitBloc() { // Fin d'inclusion de la template if (isset($GLOBALS["SYSTEM_TEMPLATE"]) && is_object($GLOBALS["SYSTEM_TEMPLATE"])){ if (get_class($GLOBALS["SYSTEM_TEMPLATE"])=="modelixe"){ $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath(""); /* réinitialise le path Modelixe après utilisation */ return true; } } return false; } /** * fonction d'inclusion des appels de feuilles de styles CSS * @return booleen */ function mxPageTitle($label, $compl=False) { if ( $GLOBALS["SYSTEM_TEMPLATE"]->isMxBloc("TITLELOAD") && isset($label) ) { $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("TITLELOAD", "modify", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."title.mxt"); $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath("TITLELOAD", "appe"); if( !$compl ) $GLOBALS['SYSTEM_TEMPLATE']->MxText("title", getMessage($label)); else $GLOBALS['SYSTEM_TEMPLATE']->MxText("title", getMessage($label)." ".$compl); $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath(""); return true; } else { $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("TITLELOAD", "modify", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."title.mxt"); $GLOBALS['SYSTEM_TEMPLATE']->MxBloc("TITLELOAD", "delete"); return false; } } /** * fonction d'inclusion des appels de feuilles de styles CSS * @return booleen */ function mxCallCss($arrayCallCss) { // if ( $GLOBALS["SYSTEM_TEMPLATE"]->isMxBloc("CSSLOAD") && is_array($arrayCallCss) && count($arrayCallCss)>0 ) if ( is_array($arrayCallCss) && count($arrayCallCss)>0 ) { $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("CSSLOAD", "modify", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."css.mxt"); $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath("CSSLOAD", "appe"); for ($j=0; $jMxText("blocCSS".".hrefcss", $arrayCallCss[$j]); $GLOBALS['SYSTEM_TEMPLATE']->MxBloc("blocCSS".".blocIntegrity", "delete"); $GLOBALS['SYSTEM_TEMPLATE']->MxBloc("blocCSS".".blocOrigin", "delete"); }elseif( is_array($arrayCallCss[$j]) ) { $GLOBALS['SYSTEM_TEMPLATE']->MxText("blocCSS".".hrefcss", $arrayCallCss[$j]["href"]); $GLOBALS['SYSTEM_TEMPLATE']->MxText("blocCSS".".blocIntegrity".".integrity", $arrayCallCss[$j]["integrity"]); $GLOBALS['SYSTEM_TEMPLATE']->MxText("blocCSS".".blocOrigin".".origin", $arrayCallCss[$j]["origin"]); } $GLOBALS['SYSTEM_TEMPLATE']->MxBloc("blocCSS", "loop"); } $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath(""); return true; } else { $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("CSSLOAD", "modify", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."css.mxt"); $GLOBALS['SYSTEM_TEMPLATE']->MxBloc("CSSLOAD", "delete"); return false; } } /** * fonction d'inclusion des appels de scripts Javascript * @return booleen */ function mxCallJs($arrayCallJs) { // if ( $GLOBALS["SYSTEM_TEMPLATE"]->isMxBloc("JSLOAD") && is_array($arrayCallJs) && count($arrayCallJs)>0 ) if ( is_array($arrayCallJs) && count($arrayCallJs)>0 ) { // var_dump($arrayCallJs); $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("JSLOAD", "modify", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."js.mxt"); $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath("JSLOAD", "appe"); for ($j=0; $jMxText("blocJS".".hrefjs", $arrayCallJs[$j]); $GLOBALS['SYSTEM_TEMPLATE']->MxBloc("blocJS".".blocIntegrity", "delete"); $GLOBALS['SYSTEM_TEMPLATE']->MxBloc("blocJS".".blocOrigin", "delete"); } elseif( is_array($arrayCallJs[$j]) ) { $GLOBALS['SYSTEM_TEMPLATE']->MxText("blocJS".".hrefjs", $arrayCallJs[$j]["src"]); $GLOBALS['SYSTEM_TEMPLATE']->MxText("blocJS".".blocIntegrity".".integrity", $arrayCallJs[$j]["integrity"]); $GLOBALS['SYSTEM_TEMPLATE']->MxText("blocJS".".blocOrigin".".origin", $arrayCallJs[$j]["origin"]); } $GLOBALS['SYSTEM_TEMPLATE']->MxBloc("blocJS", "loop"); } $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath(""); return true; } else { $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("JSLOAD", "modify", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."js.mxt"); $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("JSLOAD", 'delete'); return false; } } /** * fonction d'inclusion des appels de code Javascript brut * @return booleen */ function mxRawJs($arrayRawJs) { // var_dump($arrayRawJs); // if ( $GLOBALS["SYSTEM_TEMPLATE"]->isMxBloc("JSRAWLOAD") && is_array($arrayRawJs) && count($arrayRawJs)>0 ) if ( is_array($arrayRawJs) && count($arrayRawJs)>0 ) { // var_dump($arrayRawJs); $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("JSRAWLOAD", "modify", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."jsraw.mxt"); $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath("JSRAWLOAD", "appe"); for ($j=0; $jMxText("blocRawJS".".contentjs", $arrayRawJs[$j]); // } $GLOBALS['SYSTEM_TEMPLATE']->MxBloc("blocRawJS", "loop"); } $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath(""); return true; } else { $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("JSRAWLOAD", "modify", $GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."jsraw.mxt"); $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("JSRAWLOAD", 'delete'); return false; } } /** * affichage d'un object, ou tableau dans une template et à partir de block (la methode __mxPrint($block, $tpl) d'un objet permet d'ajouter des éléments d'affichage contextuels) * @todo a tester absolument!!! * @access public * @return booleen */ function MxPrint($obj, $block, $tpl="") { $block=( ($block!="") && (substr($block, strlen($block)-1, 1)!=".") )?($block."."):$block; $tpl=(is_object($tpl))?$tpl:$GLOBALS["SYSTEM_TEMPLATE"]; $tabToPrint=array(); if (is_object($obj)){ $tabToPrint=get_object_vars($obj); if( in_array("__mxprint", get_class_methods(get_class($obj))) ) $obj->__mxPrint($block.strtoupper(get_class($obj)), $tpl); }elseif(is_array($obj)){ $tabToPrint=$obj; } foreach($tabToPrint as $key=>$val){ if(is_object($val)){ MxPrint($block.strtoupper(get_class($val)), $tpl); $tpl->MxBlock($block.strtoupper(get_class($val)), "loop"); }elseif(is_array($val)){ MxPrint($block.strtoupper($key), $tpl); $tpl->MxBlock($block.strtoupper($key), "loop"); }else{ $tpl->MxText($block.$key, htmlentitiesconv($value) ); $tpl->MxAttribut($block.$key, htmlentitiesconv($value) ); } } if (is_object($obj)){ if( in_array("__mxprint", get_class_methods(get_class($obj))) ){ $obj->__mxPrint($block.strtoupper(get_class($obj)), $tpl); } } } /** *function printTabTreeGroup permet d'afficher une liste déroulante avec les groupes associés * */ function printTabTreeGroup($tabTreeGroup, $selected, $MxBlocName="GROUP", $name="group_id", $opt='', $default='', $multiple='', $class='form') { global $SYSTEM_TEMPLATE; /* gestion du lib en fonction de la langue courante */ $currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode(); $defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"]; $char=""; $tabSel=array(); for ($i=0; $i1) { $tabFather=$tabTreeGroup[$i]->getFatherArray(); $separ=""; for ($j=(count($tabFather)-1);$j>=0;$j--) { $buff=$separ.$tabTreeGroup[$i]->getLibelleFromGroup($tabFather[$j], $currentCode); if ($buff=="") $lib.=$separ.$tabTreeGroup[$i]->getLibelleFromGroup($tabFather[$j], $defaultCode); else $lib.=$buff; $separ="/"; } }else{ $lib=$tabTreeGroup[$i]->getLibelleFromGroup($tabTreeGroup[$i]->getId(), $currentCode); if ($lib=="") $lib=$tabTreeGroup[$i]->getLibelleFromGroup($tabTreeGroup[$i]->getId(), $defaultCode); } /*Fonction permettant de supprimer les numeros, le point et l'espace à l'affichage*/ // $lib = eregi_replace("^[[:space:]]*[a-z]+[.)".chr(176)."][[:space:]]+", "", $lib); $lib = preg_replace("/^[[:space:]]*[a-z]+[.)".chr(176)."][[:space:]]+/i", "", $lib); $tabSel[$tabTreeGroup[$i]->getId()]=$char.$lib; $tabSel=printTreeGroupSon($tabSel, $tabTreeGroup[$i], $selected, $tabTreeGroup[$i]->getId(), "--", $MxBlocName); } $GLOBALS['SYSTEM_TEMPLATE']->MxSelect($MxBlocName, $name, $selected, $tabSel, $default, $multiple, $opt, "class=\"".$class."\""); } /** *function PrintTabTreeGroup permet d'afficher une liste déroulante avec les groupes associés * */ function printTreeGroupSon($tabSel, $TreeGroup, $selected, $id, $char="--", $MxBlocName="GROUP") { global $SYSTEM_TEMPLATE; $charAdd="--"; $arrayLevel=$TreeGroup->getSonOfIdPereArray($id); /* gestion du lib en fonction de la langue courante */ $currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode(); $defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"]; $tabName=array(); for ($i=0; $igetLibelleFromGroup($arrayLevel[$i], $currentCode); if ($lib=="") $lib=$TreeGroup->getLibelleFromGroup($arrayLevel[$i], $defaultCode); $tabName[$i]=$lib; } asort($tabName); reset($tabName); for ($i=0; $ilangue->getCode(); $defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"]; $tabSel=array(); for ($i=0; $igetFatherArray(); else $tabFather=array($tabTreeGroup[$i]->getId()); $separ=""; for ($j=(count($tabFather)-1);$j>=0;$j--) { $lib=$separ.$tabTreeGroup[$i]->getLibelleFromNode($tabFather[$j], $currentCode); if ($lib=="") $lib=$separ.$tabTreeGroup[$i]->getLibelleFromNode($tabFather[$j], $defaultCode); /*Fonction permettant de supprimer les numeros, le point et l'espace à l'affichage*/ // $lib = eregi_replace("^[[:space:]]*[a-z]+[.)".chr(176)."][[:space:]]+", "", $lib); $lib = preg_replace("/^[[:space:]]*[a-z]+[.)".chr(176)."][[:space:]]+/i", "", $lib); $tabSel[($tabFather[$j])]=$lib; $separ.="--"; } $tabSel=printTreeNodeSon($tabSel, $tabTreeGroup[$i], $selected, $tabTreeGroup[$i]->getId(), $separ, $MxBlocName); } $GLOBALS['SYSTEM_TEMPLATE']->MxSelect($MxBlocName, $name, $selected, $tabSel, $default, '', $opt, $attr); } /** *function PrintTabTreeNode permet d'afficher une liste déroulante avec les groupes associés * @return tableau */ function printTreeNodeSon($tabSel, $TreeGroup, $selected, $id, $char="--", $MxBlocName="NODE") { global $SYSTEM_TEMPLATE; $charAdd="--"; $arrayLevel=$TreeGroup->getSonOfIdPereArray($id); /* gestion du lib en fonction de la langue courante */ $currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode(); $defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"]; $tabName=array(); for ($i=0; $igetLibelleFromNode($arrayLevel[$i], $currentCode); if ($lib=="") $lib=$TreeGroup->getLibelleFromNode($arrayLevel[$i], $defaultCode); $tabName[$i]=$lib; } asort($tabName); reset($tabName); for ($i=0; $ise sert de
*MxAttribut : UserId
*Optionnel
*Mxtext : UserFirstName
*MxText : UserLastName
*MxText : UserLoginName *

*

Les utilisateurs sont triés par ordre Alpha sur le firstName

* @param tableau objets utilisateurs * @param entier identifiant du selectionné * @param chaine nom du bloc Mx a utiliser * @return booleen */ function printTabUser($tabUser, $selected, $MxBlocName="USER", $name="user_id", $opt='', $default='', $class='form') { global $SYSTEM_TEMPLATE; /* Pour le Tri/Nom */ $tabName=array(); $tabValue=array(); for ($i=0; $igetFirstName(); $tabName[$i]=$lib; } asort($tabName); reset($tabName); $j=0; // Pour l'affichage while (list($i, $lib) = each($tabName)) { if (is_object($tabUser[$i])) { $tabValue[$tabUser[$i]->getId()]=htmlentitiesconv($tabUser[$i]->getFirstName()." ".$tabUser[$i]->getLastName()); $j++; } $GLOBALS['SYSTEM_TEMPLATE']->MxSelect($MxBlocName, $name, $selected, $tabValue, $default, '', $opt, "class=\"".$class."\""); } return true; } /** *function PrintTabCommProfiles permet d'afficher une liste déroulante avec des Profils de communauté *

se sert de
*MxAttribut : UserId
*Optionnel
*Mxtext : UserFirstName
*MxText : UserLastName
*MxText : UserLoginName *

*

Les utilisateurs sont triés par ordre Alpha sur le firstName

* @param tableau objets utilisateurs * @param entier identifiant du selectionné * @param chaine nom du bloc Mx a utiliser * @return booleen */ function printTabCommProfiles($selected='', $MxBlocName="COMMPROFILES", $name="commprofile_id", $opt='', $default='Profil par défaut', $attr='') { global $SYSTEM_TEMPLATE; $arrayCommProfiles = array("blog"=>"Blog", "assoc"=>"Association", "vitrine"=>"Vitrine", "ecommerce"=>"E-commerce"); asort($arrayCommProfiles); // reset($arrayCommProfiles); $GLOBALS['SYSTEM_TEMPLATE']->MxSelect($MxBlocName, $name, $selected, $arrayCommProfiles, $default, '', $opt, $attr); return true; } /** * lineStyle : applique les style de ligne des tableaux * utiliser dans un block (tableau), l'attribut lineStyle qui fera référence aux classes: lineStyle1 && lineStyle2 * @param tableau objets utilisateurs * @param entier identifiant du selectionné * @param chaine nom du bloc Mx a utiliser * @return booleen */ function lineStyle($block){ static $tab; $tab[$block]=(isset($tab[$block])?$tab[$block]:0); if( ($tab[$block]%2) && (isset($GLOBALS["SYSTEM_TEMPLATE"]))){ $GLOBALS["SYSTEM_TEMPLATE"]->MxAttribut($block.".lineStyle", "lineStyle1"); }elseif((isset($GLOBALS["SYSTEM_TEMPLATE"]))){ $GLOBALS["SYSTEM_TEMPLATE"]->MxAttribut($block.".lineStyle", "lineStyle2"); } $tab[$block]++; } ?>