Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#1 01/06/2014 11:44:16

Super_chemist
Membre
Inscription : 27/05/2011
Messages : 417

Amélioration du module XMENU

Salut à tous

Une petite amélioration que j'ai fait sur le module XMENU : désormais, les pages parent de la page active affichent une classe "xzonp", comme le menu natif !
Pratique pour les designers css !

Je la propose ici, à voir si vous voulez l'intégrer dans le module de pydou.

[== Indéfini ==]
<?php
/*
 * module: xmenu - extended menu
 * Extra Menu for ZitePLUS
 * 
 * Ce module permet la génération de menu hierarchique dans ziteplus
 *
 * Copyright - (d)oekia 2009
 * Licence : CeCILL-B, http:	//www.cecill.info
 * Copyright Jean-Paul GIAUSSRAND 2009-2010
 * Site: http://www.giausserand.fr/index.php?perma=ziteplus
 *
	Proposition v1.9	01/06/14	Super_chemist	Ajout de la classe xzonp pour les parents de la page active
	v1.8	19/06/2010  jpg     Adaptation du module à la version 0.9.1:
															- gestion évènementielle
															- Utilisation de makeURL (en cours)
  1.7.1	17/02/2010	jpg			Correction adressage 1ère page (suppression ?perma=)
	v1.6	14/10/2009  doekia	FIXUP: href de la page d'acceuil http://serveur/
  								  				FIXUP: pas de '.html' pour cPageTyp == 5
  								  				FIXUP: prise en charge du target=_blank
  v1.5	09/10/2009  doekia	FIXUP: manque un </li> à la fin du menu
  													FIXUP: manque un / dans l'url quand l'install est en sous-répetoire
  													FIXUP: 1ere page parent de toutes les autres (=>? bug zite)
  v1.4	09/10/2009  jpg			simplification du code (identification des pages enfants)
  v1.3	09/10/2009  jpg			prise en compte des droits sur les pages
  v1.2	08/10/2009  jpg			Adaptation pour meilleure intégration dans ziteplus
  v1.1	08/10/2009  jpg			Passage du module en code objet
  v1.0	08/10/2009  doekia	version initiale
*/
class Txmenu extends Tmodule {
	protected function Register() {		self::$cms->register_event(eMenu,eBefore,$this->modulename);	}
	function Event($event,$mode,&$out,$opt=null) {
	  $xmnu = '';
	  $isadmin = (int)$_SESSION['zite_admin']>0;
	  $rewrite = self::$cms->rewrite && !$isadmin;
		$base = self::$cms->rewrite ? ($isadmin ? self::$cms->basep.self::$cms->get_data('navig_admin') : (self::$cms->rewrite===2?self::$cms->config['files_index']:' ')) : self::$cms->basep;
	  for( $count = 0, reset(self::$cms->struct), $level=0; list($key, $pg) = each(self::$cms->struct); $count++){
	    $noli = '</li>';
	    $activ = (self::$cms->truepage == $key)?' xzon':'';  // Nous sommes sur cette page
	    $child = (@self::$cms->struct[$key+1][cPageRang] > @$pg[cPageRang])?' xnest':'';  // Nous avons des pages enfants - FIXME
		for ($i=1; @self::$cms->struct[$key+$i][cPageRang] > @$pg[cPageRang];$i++){//Nous avons un enfant sur lequel nous sommes
			$activ .= (self::$cms->truepage == ($key+$i) )?' xzonp':'';
		}
		
	    if ($pg[cPageType]>pgbitType)               continue;  // La page est un panneau lateral - FIXME       à voir
	    if (!($pg[cPageOn] || $isadmin))            continue;  // La page est désactivée
	    $tgt = ((($pg[cPageType]&pgbitType)==5)&&(isset($pg[cPageOpt]['target']))?' target="_blank"':'');

	    if ($pg[cPageRang]!=$level){ // Testons le niveau et (dés)imbriquons si besoin
	      while($level > ($pg[cPageRang]+0)) { $xmnu .=$noli.'</ul>'; $level--; }
	      while($level < ($pg[cPageRang]+0)) { $xmnu .='<ul class="xzul'.++$level.'">'; $noli = ''; }
	    }
	    if (self::$cms->isPageAuth($key)){
				$f = $rewrite ? $pg[cPageIdent].'.html' : $pg[cPageIdent];
      	$xmnu .= $noli.'<li class="xzli'.$level.$activ.$child.'"><a class="xzli'.$level.$activ.$child.'" href="'.($count?(($pg[cPageType]&pgbitType)!=5?$base.$f:$pg[cPageIdent].(isset($pg[cPageOpt]['target'])?'" target="'.$s[cPageOpt]['target']:'')):preg_replace('/\/[^\/]*$/','',$_SERVER['REQUEST_URI']).'/').'"'.$tgt.'>'.$pg[cPageTitre].'</a>';
	    }
	  }
	  for($noli = '</li>';$level > 0; $level--) { $xmnu .=$noli.'</ul>'; $noli=''; }
	  self::$cms->content['xmenu']=$xmnu;
	}
}
?>

Adrien

Hors ligne

Pied de page des forums