Vous n'êtes pas identifié(e).
Bonjour à tous,
J'ai l'impression d'avoir déja lu un post la dessus dans le forum mais je ne le retrouve pas, donc désolé si le sujet a déja été évoqué, et merci de me faire suivre le lien de l'échange si c'est le cas !
Bref, voila mon probleme, certaines pages, ce ne sont jamais les mêmes, c'est totalement aléatoire de certains zite que j'ai réalisé ne s'affichent pas correctement.
A dire vrai elles ne s'affichent pas du tout, et à la place j'ai un code bizarre du genre :
HTTP/1.1 200 OK Date: Mon, 03 May 2010 08:40:29 GMT Server: Apache/2.2.X (OVH) X-Powered-By: PHP/5.2.13 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 1411 Keep-Alive: timeout=5, max=91 Connection: Keep-Alive Content-Type: text/html µWmoÛ6þü«>dYvÚMb»óµà·Ú2º(Z:Û\%R%)çeØÿ]þÅ8n¬¶HñÞësçæa7ü}äÃÒ¤ ¦¿ö.8®ç}|Ùõ¼ð~{ö{ШÕ!TLhn¸,ñ<à³4&;󼫫«ÚÕËT/{׫a × ®Ù¬Å&vÚÍâÂë4ºõLãôô´.Î"é'EÃÀuñkÎW-§+ AaÜð&C¢rÕr^ÏÊC´dJ£iq-Ýׯ>uxe¸I°ýaÀdØïûw0NàÍ1óü4K$ozå¹Ãfß;0èôý£Ï¬5tÐ-§Ãc#¶Pl ç 0Ô²(7xÎìQ Ýfkt"~Á+©b½×FCà\CZ>oà´N¸øK ó£ÍMµ
Test effectué sur plusieurs ordis, avec plusieurs navigateurs différents.
Je pense que le probleme vient de OVH.
Je n'ai pas encore activé l'URL rewritting, le probleme peut il venir de là ?...
Peut être dois je modifier mon .htaccess
Hors ligne
Bonjour à tous,
J'ai l'impression d'avoir déja lu un post la dessus dans le forum mais je ne le retrouve pas, donc désolé si le sujet a déja été évoqué, et merci de me faire suivre le lien de l'échange si c'est le cas !
Bref, voila mon probleme, certaines pages, ce ne sont jamais les mêmes, c'est totalement aléatoire de certains zite que j'ai réalisé ne s'affichent pas correctement.
A dire vrai elles ne s'affichent pas du tout, et à la place j'ai un code bizarre du genre :HTTP/1.1 200 OK Date: Mon, 03 May 2010 08:40:29 GMT Server: Apache/2.2.X (OVH) X-Powered-By: PHP/5.2.13 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 1411 Keep-Alive: timeout=5, max=91 Connection: Keep-Alive Content-Type: text/html µWmoÛ6þü«>dYvÚMb»óµà·Ú2º(Z:Û\%R%)çeØÿ]þÅ8n¬¶HñÞësçæa7ü}äÃÒ¤ ¦¿ö.8®ç}|Ùõ¼ð~{ö{ШÕ!TLhn¸,ñ<à³4&;󼫫«ÚÕËT/{׫a × ®Ù¬Å&vÚÍâÂë4ºõLãôô´.Î"é'EÃÀuñkÎW-§+ AaÜð&C¢rÕr^ÏÊC´dJ£iq-Ýׯ>uxe¸I°ýaÀdØïûw0NàÍ1óü4K$ozå¹Ãfß;0èôý£Ï¬5tÐ-§Ãc#¶Pl ç 0Ô²(7xÎìQ Ýfkt"~Á+©b½×FCà\CZ>oà´N¸øK ó£ÍMµ
Test effectué sur plusieurs ordis, avec plusieurs navigateurs différents.
Je pense que le probleme vient de OVH.
Je n'ai pas encore activé l'URL rewritting, le probleme peut il venir de là ?...Peut être dois je modifier mon .htaccess
Bonjour,
L'option GZIP est installée, il faudrait désactiver cela mais je ne sais pas trop
comment faire, je n'ai jamais utilisé cette option. Mais c'est une bonne piste.
A bientôt,
Michaël
ZiteCMS rocks !
Hors ligne
L'option GZIP est installée, il faudrait désactiver cela mais je ne sais pas trop
comment faire, je n'ai jamais utilisé cette option. Mais c'est une bonne piste.
Peut-être en mettant un
ini_set('zlib.output_compression',false) ou ini_set('zlib.output_compression',Off)
pour désactiver la compression.
a+
Jean-Paul
Hors ligne
Bref, voila mon probleme, certaines pages, ce ne sont jamais les mêmes, c'est totalement aléatoire de certains zite que j'ai réalisé ne s'affichent pas correctement.
A dire vrai elles ne s'affichent pas du tout, et à la place j'ai un code bizarre du genre :HTTP/1.1 200 OK Date: Mon, 03 May 2010 08:40:29 GMT Server: Apache/2.2.X (OVH) X-Powered-By: PHP/5.2.13 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 1411 Keep-Alive: timeout=5, max=91 Connection: Keep-Alive Content-Type: text/html µWmoÛ6þü«>dYvÚ
Si l'hypothèse de michael ne donne rien il faudra peut-être voir du coté de la gestion des tampons de sortie (les fonctions de type ob_xxxxx) qui peuvent produire ce type d'affichage.
ps: tu utilises quel version de zite ?
Hors ligne
Merci pour vos réponses
La version de zite utilisée est la dernière je crois bien la ZITEPLUS 0.8.3
par contre pour vos autres propositions, il s va falloir m'expliquer un poil plus, parce que je n'ai pas tout pigé :
Comment active t'on, ou bien désactive t'on le GZIP, et où est ce que je dois rajouter la ligne concernant le ini_set ?.... dans le .htaccess ?
Hors ligne
Merci pour vos réponses
La version de zite utilisée est la dernière je crois bien la ZITEPLUS 0.8.3
Il fallait le dire tout de suite
Il faut que tu passes en version 0.9.0 de ZitePLUS => cela résout complètement le problème
a+
Jean-Paul
ps: les forums de ZitePLUS sont un peu plus bas
Hors ligne
Merci Chef c'est impecc
ça marche !... après quelques tests la mise à jour vers la version 0.9 a réglée mon souci d'affichage des textes. mais je me retrouve maintenant avec deux autres problèmes.
J'utilisais un fil d'Ariane qui ne fonctionne plus désormais, il doit falloir l'adapter j'imagine.
le code :
function filAriane() {
$n = $this->truepage ? $this->truepage : 1;
$nav = '';
$isadmin = (int)$_SESSION['zite_admin']>0; //V06
$rewrite = $this->rewrite && !$isadmin; //V06
$base = $this->rewrite ? ($isadmin ? $this->base.$this->get_data('navig_admin'):''):$this->base; //V06
$s = $this->struct[$n]; //
$nav .= $s[1];
$td = $s[2]; // hierrachical level of the page
if ($n>1) { // if not at root
for ($i=$n-1; $i>1; $i--) {
$s = $this->struct[$i];
$d = $s[2];
if ($d<$td && $s[4] && $d>1) {
$nav = '<a href="'.$base.($rewrite ? $s[0].'.html':$i).'">'.$s[1].'</a> > '.$nav;
$td = $d;
}
}
}
return $nav;
}
J'ai droit en réponse à : Fatal error: Call to undefined method zite::oldfilAriane() in /homez.335/profilem/www/template.php on line 29
et mon deuxieme probleme. L'affichage des menus de la partie administration n'est pas propre :
[edit_admin] [edit_config] MIGRATION GROUPES UTILISATEURS SitemapXML Sauvegarde [page_new_admin] [selectmodule_admin] [search_admin] [selectdoc_admin] [logout]
quid ????
Hors ligne
je crois que pour le deuxième problème il suffit de refaire une migration donc dans migration
un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/
Hors ligne
Et pour le premier problème:
- soit tu remets dans zite.php le code de ta fonction et tu vois si ça marche
- soit tu mets ce code dans zite.php:
function filariane() {//091
$rewrite = $this->rewrite && !$isadmin;
$base = $this->rewrite ? ($isadmin ? $this->basep.$this->get_data('navig_admin') : ($this->rewrite===2?$this->config['files_index']:' ')) : $this->basep;
$out='';
$nopage=$this->truepage;
if ($this->truepage) {
while (($this->struct[$nopage][cPageRang]!=1)&&($nopage>1)) {
$out = (strlen($out)?'<a href="'.$base.($rewrite ? $this->struct[$nopage][cPageIdent].'.html' : $this->struct[$nopage][cPageIdent]).'">'.$this->struct[$nopage][cPageTitre].'</a> > ':$this->struct[$nopage][cPageTitre]).$out;
$nopage = $this->struct[$nopage][cPagePere]; // Prendre la page parente
}
$out = '<div id="filariane">chemin: '.(strlen($out)?'<a href="'.$base.($rewrite ? $this->struct[$nopage][cPageIdent].'.html' : $this->struct[$nopage][cPageIdent]).'">'.$this->struct[$nopage][cPageTitre].'</a> > ':$this->struct[$nopage][cPageTitre]).$out.'</div>';
}
return $out;
}
et cela fonctionnera aussi lors de ta migration future en 0.9.1
a+
Jean-Paul
Hors ligne
je crois que pour le deuxième problème il suffit de refaire une migration donc dans migration
C'est effectivement ce que j'ai fait au début car tous les menus étaient sous la forme [edit_machin] et cela a marché pour MIGRATION GROUPES UTILISATEURS SitemapXML et Sauvegarde, mais pas pour les autres !
Pour le fil d'Ariane, j'ai bien essayé avec l'ancien code et le nouveau mais j'ai toujours la même erreur :
Fatal error: Call to undefined method zite::filariane() in /homez.335/profilem/www/template.php on line 29
Hors ligne
Pour le fil d'Ariane, j'ai bien essayé avec l'ancien code et le nouveau mais j'ai toujours la même erreur :
Fatal error: Call to undefined method zite::filariane() in /homez.335/profilem/www/template.php on line 29
Cette erreur me fait penser à celle-ci http://www.zitecms.org/zite/forum/viewt … 4946#p4946
Hors ligne
C'est effectivement ce que j'ai fait au début car tous les menus étaient sous la forme [edit_machin] et cela a marché pour MIGRATION GROUPES UTILISATEURS SitemapXML et Sauvegarde, mais pas pour les autres !
Tu as clairement quelque chose qui n'a pas fonctionné lors de la migration...si ce n'est que les messages, c'est pas grave
Le plus simple, c'est peut-être de mettre à la main dans le fichier messages.ini les lignes suivantes:
logout = "Quitter"
selectmodule_admin = "MODULE"
search_admin = ""
page_new_admin = ""
selectdoc_admin = "DOCUMENTS"
ps: tu peux le faire par l'option CONFIG
a+
jean-paul
Hors ligne
Tu as raison, le seul probleme des menus ne me pose pas de probleme qu'il y ai [edit_document] à la place de DOCUMEN, je m'en fiche un peu.
Mais c'est plutôt que je bosse pour un client qui va utiliser le CMS et là ça ne fait pas très "pro" ...
J'ai rajouté les lignes dans le fichier message.ini, effectivement ils n'y apparaissaient pas et ça a changé pour MODULES DOCUMENTS Quitter, mais pas pour [edit_admin] [edit] [edit_source] [edit_config] et il y a aussi les boutons de validation qui sont de la forme [submit] et aller à la page : [edit_admin]
Peut être le mieux, c'est que je supprime complètement le site en gardant sous la main mon fichier dat et que je réinstalle la version 0.9 toute propre, non ?... ça évitera que l'on galère par petits bouts !
Merci en tous cas...
Je te tiens au jus pour le fil d'ariane
Hors ligne
berticoyote a écrit :Pour le fil d'Ariane, j'ai bien essayé avec l'ancien code et le nouveau mais j'ai toujours la même erreur :
Fatal error: Call to undefined method zite::filariane() in /homez.335/profilem/www/template.php on line 29Cette erreur me fait penser à celle-ci http://www.zitecms.org/zite/forum/viewt … 4946#p4946
Oui c'est une discussion qu'on a eut tous les deux effectivement sur le même probleme, mais j'ai vérifié effectivement en rajoutant un } au cas où ce fusse le même probleme, mais dans ce cas j'ai droit à :
Parse error: syntax error, unexpected '}' in /homez.335/profilem/www/zite/zite.php on line 1069 ce qui est très clair....
donc c'est pas le soucis, apparemment cela vient d'autre chose.
Pour info, j'ai déclaré ma fonction dans template.php comme ceci : <?php echo $zite->filariane() ?>
ça me parait bon, et j'ai utilisé le dernier script fil d'ariane que tu m'a envoyé, mis tout en bas de mon fichier zite.php juste avant le ?>
Hors ligne
J'ai rajouté les lignes dans le fichier message.ini, effectivement ils n'y apparaissaient pas et ça a changé pour MODULES DOCUMENTS Quitter, mais pas pour [edit_admin] [edit] [edit_source] [edit_config] et il y a aussi les boutons de validation qui sont de la forme [submit] et aller à la page : [edit_admin]
En gros, c'est la mise à jour du fichier messages.ini qui s'est mal passée.
Peut être le mieux, c'est que je supprime complètement le site en gardant sous la main mon fichier dat et que je réinstalle la version 0.9 toute propre, non ?... ça évitera que l'on galère par petits bouts !
pourquoi pas, une version toute neuve, c'est jamais une mauvaise idée
Vu la description du problème tu peux aussi essayer de reprendre le fichier messages.ini depuis l'archive de ziteplus 0.9.0 et de le mettre sur ton site
a+
jean-paul
Hors ligne
Pour info, j'ai déclaré ma fonction dans template.php comme ceci : <?php echo $zite->filariane() ?>
ça me parait bon, et j'ai utilisé le dernier script fil d'ariane que tu m'a envoyé, mis tout en bas de mon fichier zite.php juste avant le ?>
A priori, ça a l'air bon... mais poste ton zite.php et ton template.php
Hors ligne
Vu la description du problème tu peux aussi essayer de reprendre le fichier messages.ini depuis l'archive de ziteplus 0.9.0 et de le mettre sur ton site
J'ai copié les fichiers message.ini et messagenew.ini sur mon serveur... ça me parait marcher nickel !...
ça c'est réglé, impecc.
Merci.
Pas besoin de tout réinstaller !
Hors ligne
A priori, ça a l'air bon... mais poste ton zite.php et ton template.php
Voila pour le fichier zite.php :
<?php
/*
Zite 0.6.2beta:
Copyright Renaud GOMBERT, 2007, rgombert@essentiel.net
http://zite.prositif.com
Licence : CeCILL-B, http://www.cecill.info
//
ZitePlus, Zite+
Copyright Jean-Paul GIAUSSRAND 2008-2009
Site: http://www.giausserand.fr/index.php?perma=ziteplus
Licence : CeCILL-B, http://www.cecill.info
Ce logiciel est un programme informatique de type CMS servant diffuser et à
gérer le contenu d'un site web de la manière la plus simple possible.
Les plus: (voir le site suivant pour une description complète: http://www.giausserand.fr/index.php?perma=ziteplus)
- Gestion modulaire 'sitemap.xml, sauvegarde du site ...'
- Gestion sécurisée des documents (remplace la gestion de fichiers)
- gestion des droits utilisateurs, des groupes et de la sécurité des pages
. Gestion de la création/modification/suppression des utilisateurs
. Gestion de la création/modification/suppression des groupes d'utilisateurs (un
utilisateur peut appartenir à plusieurs groupes)
. Gestion de la sécurité des pages en fonction des groupes utilisateurs
La consultation d'une page peut être accessible à tout le monde ou restreinte à un ou
plusieurs groupes d'utilisateurs.
Une page "enfant" sans droit défini hérite automatiquement des droits de la page parente
de niveau supérieur.
Une page sans droit est accessible à tout le monde en lecture.
Droit de lecture et d'écriture séparé
- Création de nouveaux attributs de pages:
$this->struct[5] = groupes autorisés en écriture sur la page
$this->struct[6] = groupes autorisés en lecture sur la page
$this->struct[7] = n° de la page parent (facilite gestion des droits)
- Création d'un sitemap.xml pour les moteurs de recharche
- Création d'une option de sauvegarde du site
- La position dans la liste des pages est gardée
- Assistant de création de pages
- Possibilité de créer des URL, des pages latérales
- Affichage des dates de modifications des pages
- Divers changement dans le code (bugs ou fonctionalités)
. Réécriture sauvegarde des pages
. Modification Sitemap() pour tenir compte des droits et date de modifs des pages
. Utilisation de constante symbolique pour faciliter la lecture du source
. Si pas d'URL rewriting ou de multiview:
- Le plan de site utilise les lien de type perma=xxxx
- Le menu utilise les liens de type perma=xxxx
. etc...
*/
error_reporting(E_ERROR | E_PARSE);// | E_ALL);
//error_reporting(E_ALL);
ini_set('display_errors',1);
// valeur pour système en production
//error_reporting(0);
//@ini_set('display_errors',0);
ini_set('arg_separator.output', '&');
set_magic_quotes_runtime(0);//plus en php 5.3 enfin
define('ZITEVER', 'ZITEPLUS 0.9.0');
define('cPageIdent',0);
define('cPageTitre',1);
define('cPageRang',2);
define('cPageType',3); // impair=HTML, pair=PHP
define('cPageOn',4);
define('cPageWrite',5);
define('cPageRead',6);
define('cPagePere',7);
define('cPageOpt',8); // options, fonction du type de page
define('cPageDesc',9);
define('cPageKeyword',10);
//
define('argsep','|');
/*define('pgHTML',1);
define('pgPHP',2);
define('pgMENU',3);
define('pgURL',5);*/
define('pgbitType',255);
//define('pgbitCascade',2048);
define('pgbitPosSide',4096);
define('pgbitMenu',8192);
//
if (phpversion()<'5') { // Il faut php 5, msg 0.8.3b8
exit('<h1> Ziteplus a besoin de PHP5 pour fonctionner<br>Il faut modifier le fichier <u>.htaccess</u> en fonction de votre hébergeur<br>Consulter la <a href="http://www.giausserand.fr/index.php?perma=ziteplus_manual_php5">documentation<a></h1>');
//sinon: Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/146/sda/d/8/xxxxxxxxx/zite/tdocs.php on line 23
//
}
require_once 'tdocs.php';
require_once 'tmodule.php';
//
class zite {
var $zpath,
$ipath,
$cpath,
$dpath,
$opath,
$config,
$args,
$struct, // La structure des pages
$messages,
$syspages,
$truepage,
// $parents,
$base,
$basep,
$content,
$rewrite, // 0=aucun, 1=urlrewriting, 2=multiview (free)
$rewritebase, // Contient l'url racine du site
$group, // groupes utilisateurs en cours
$user, // utilisateur en cours
$module, // liste des modules
$docs, // liste des fichiers
$forum,
// pas en prod actuellement, mais fonctionnel
$isstat,
$filestat, // faut-il générer des statistiques
$mimetype, // Provisoire
$isdoc;
//
function zite($caller, $cs=false) {
Tmodule::set_cms($this);
$this->zpath = dirname(__FILE__);
$this->ipath = dirname($caller);
$this->cpath = $this->ipath.'/zdata';
$this->dpath = $this->cpath.'/zdocs';
$this->opath = $this->cpath.'/zoption';
// $this->fpath = $this->ipath.'/zfiles';
$this->config = parse_ini_file($this->cpath.'/config.ini', true);
if ($this->config['page_compress']==1) {ini_set('zlib.output_compression',true);}
elseif ($this->config['page_compress']==2) {ob_start("ob_gzhandler");}
$this->isstat = (isset($this->config['statistic'])&&($this->config['statistic']=='on'))?1:0;
$this->filestat = $this->cpath.'/access.log';
$this->args = @explode(argsep,$_GET['z']);
// if (get_magic_quotes_gpc()) $_POST = array_map('stripslashes', $_POST);
$this->struct = (array)unserialize(@file_get_contents($this->cpath.'/structure.dta'));
$this->BuildStruct();
// Juste au cas où on vient de Zite => préparer la première connexion de migration
if (!file_exists($this->cpath.'/user.dta') && isset($this->config['login_adminname'])) {//083b4
$this->user[$this->config['login_adminname']] = array($this->config['login_adminpass'],'Administrateur du site',array('admin'));
$this->user[$this->config['login_username']] = array($this->config['login_userpass'],'Webmestre du site',array('webmaster'));
// $this->user['webmaster'][0] = $this->config['login_userpass'];
$this->writedata($this->cpath.'/user.dta', $this->user);
unset($this->user);
if (!file_exists($this->cpath.'/group.dta') && file_exists($this->zpath.'/migration/group.dta')) rename($this->zpath.'/migration/group.dta', $this->cpath.'/group.dta');
if (!file_exists($this->cpath.'/module.dta') && file_exists($this->zpath.'/migration/module.dta')) rename($this->zpath.'/migration/module.dta', $this->cpath.'/module.dta');
}
$this->group = (array)unserialize(@file_get_contents($this->cpath.'/group.dta'));
$this->user = (array)unserialize(@file_get_contents($this->cpath.'/user.dta'));
$this->module = (array)unserialize(@file_get_contents($this->cpath.'/module.dta'));
$this->docs = new Tdocs($this->cpath.'/docs.dta');
$this->mimetype = array();
// $this->forum = (array)unserialize(@file_get_contents($this->cpath.'/forum/forum.dta'));
// $this->livredor = (array)unserialize(@file_get_contents($this->cpath.'/livredor.dta'));
$this->content = array(); // $this->content = $this->parents = array();
$this->messages = $this->truepage = false;
$this->rewrite = (int)$this->config['url_rewriting'];
// if ($this->rewrite) {
$dirscript = dirname($_SERVER['SCRIPT_NAME']);
$this->rewritebase = 'http://'.$_SERVER['HTTP_HOST']/*$_SERVER['SERVER_NAME'] v090b2*/.(strlen($dirscript)==1?'/':$dirscript.'/');
// }
$this->base = $this->config['files_index'].'?z=';
$this->basep =$this->config['files_index'].'?perma=';
$this->syspages = array('login', 'logout', 'admin', 'config_editor', 'page_editor','page_extended', 'source_editor', 'delete', 'sitemap','selectgroup','module','option');
foreach ($this->module as $clef => $valeur ) {
if ($valeur[1]==1) $this->syspages[]=strtolower($valeur[0]);
}
session_start();
if($cs || !array_key_exists('zite_admin',$_SESSION) || $_SESSION['zite_id'] != $this->config['site_id']) {
session_unset(); // ou plutot: $_SESSION = array();
$_SESSION['zite_admin'] = 0;
$_SESSION['zite_id'] = $this->config['site_id'];
$_SESSION['showadminbar'] = false;
}
$_SESSION['url_base'] = $this->rewrite ? ($this->rewrite===2?$this->config['files_index']:'') : $this->basep;
$_SESSION['url_rewrite']=$this->rewrite;
$_SESSION['url_rewritebase']=$this->rewritebase;
$this->isdoc=false;
$this->content['pnl2']=$this->content['pnl3']=$this->content['pnl4']=$this->content['pnl5']=$this->content['pnl6']=$this->content['pnl7']=$this->content['pnl8']=$this->content['pre_main']=$this->content['post_main']='';
}
//
function builder() {
// Gestion du multiviews de Free ou autre (! il faut une directive <base> dans le template)
if ($this->rewrite==2) {
if (!array_key_exists('z',$_GET)) {
$v = explode('.',basename($_SERVER['REQUEST_URI']));
if ((count($v)==2)&&($v[1]=='html')) {//modif jpg
if (!array_key_exists('z',$_GET)) {
$_GET['perma']=$v[0];
}
} else {
$_GET['z'] = $this->args[0] = 1;
}
}
}
if (array_key_exists('perma', $_GET)) {
$z=-1;
$p = $_GET['perma']; // recheche page perma= !!!! trop long, il manque un break
foreach ($this->struct as $k => $v) if ($v[0]==$p) $z=$k;
if ($z==-1) {
$this->content['main'] = $this->get_message('error404');
header("HTTP/1.0 404 Not Found");
}
$_GET['z'] = $this->args[0] = $z;
}
if (array_key_exists('doc',$_GET)) {//obsolète en 090
$this->isdoc=true;
$this->args = explode(argsep,$_GET['doc']);
$docname=$this->args[0];
if ($this->docs->isDocAuth($docname)) { // Vérification des droits (et aussi existence)
$doc = $this->docs->docs[$docname];
if (!$this->mimetype) $this->mimetype = @parse_ini_file($this->zpath.'/mime.txt', true);
ob_end_clean();
if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && ($_SERVER['HTTP_IF_NONE_MATCH']==filemtime($this->dpath.'/'.$doc[cDocFilename])) ) {
header("HTTP/1.0 304 Not Modified");
exit;
} else {
header('Content-Type: '.$this->mimetype[$doc[cDocExt]]);
header('Content-Disposition: inline; filename="'.$doc[cDocFilename].'"');
header('Content-Length: '.filesize($this->dpath.'/'.$doc[cDocFilename]));
header('Cache-Control: ');//max-age=30000');
header('ETag: '.filemtime($this->dpath.'/'.$doc[cDocFilename]));
header('Pragma: ');
header('Date: '.date("r",filemtime($this->dpath.'/'.$doc[cDocFilename]))); // header(' Date: '.date("r",filemtime($this->dpath.'/'.$doc[cDocFilename])));
header('Expires: ');//.date("r",time()+3000000));
header('Last-modified: '.date("r",filemtime($this->dpath.'/'.$doc[cDocFilename])));
ob_flush();
readfile($this->dpath.'/'.$doc[cDocFilename]);
exit;
}
}
exit;
return; // à modifier pour renvoyer un code d'erreur
}
$page = strlen($_GET['z']) ? $this->args[0] : 1; // fixer page en cours
if (in_array($page, $this->syspages)) { // Est-ce une page système ?
$pagefun = "page_$page";
if (in_array($page.'.php', array_keys($this->module))) { // page de module
$this->content['main'] = $this->page_module($page);
} else $this->content['main'] = $this->$pagefun(); // vrai page système
} else { // page standard
if ($this->config['site_status']=='on'|$_SESSION['zite_admin']>0) {
if (array_key_exists($page, $this->struct) && ($this->struct[$page][cPageOn] || $_SESSION['zite_admin']>0)) {
// Voir si la page est affichable
$infos = $this->struct[$page];
if ($this->isPageAuth($page)) {
$this->content['menu_title'] = $infos[cPageTitre];
$this->content['page_desc'] = isset($infos[cPageDesc])?$infos[cPageDesc]:$infos[cPageTitre];
$this->content['page_keyword'] = isset($infos[cPageKeyword])?$infos[cPageKeyword]:'';
$this->truepage = $page; // devrait être après le test suivant !!! à vérifier et déplacer
if (($infos[cPageType]&pgbitType)!=5) {
$_SESSION['truepage']=$this->truepage;
$tmp = $this->get_content($infos[cPageIdent], ($infos[cPageType]%2)==0 , true);
$this->content['main'] = $tmp ? $tmp : $this->get_message('errorNOFILE');
} else header('Location: '.$infos[cPageIdent]); // si URL
} else {
$this->content['main'] = $this->get_message('error401');} // page interdite
//header('HTTP/1.0 401 ident error');
} else {
$this->content['main'] = $this->get_message('error404');
header("HTTP/1.0 404 Not Found");
}
} else {
$this->content['main'] = $this->get_message('errorCLOSED');
}
}
$this->navbuilder();
if ($_SESSION['showadminbar']) $this->prepend($this->adminbar());
}
//
function navbuilder() {
$n = $this->truepage ? $this->truepage : 1;
$isadmin = (int)$_SESSION['zite_admin']>0;
$rewrite = $this->rewrite && !$isadmin;
$base = $this->rewrite ? ($isadmin ? $this->basep.$this->get_data('navig_admin') : ($this->rewrite===2?$this->config['files_index']:' ')) : $this->basep;
$max = count($this->struct);
//
$nav = '';
$s = $this->struct[$n];
if (($s[cPageType]&pgbitMenu)!=pgbitMenu) {
if ($n==1) {
$nav = '<li class="zli1 zon"><a href="'.preg_replace('/\/[^\/]*$/','',$_SERVER['REQUEST_URI']).'/">'.$s[cPageTitre].'</a></li>';
} else {
if ($s[cPageOn] || $isadmin) $nav = '<li class="zli'.$s[cPageRang].' zon"><a href="'.$base.($rewrite ? $s[cPageIdent].'.html' : $s[cPageIdent]).'" '.((($s[cPageType]&pgbitType)==5)&&(isset($s[cPageOpt]['target']))?'target="_blank"':'').'>'.$s[cPageTitre].'</a></li>';
}
}
$td = $s[2];
// $this->parents[$s[0]] = $n;
if ($n>1) {
for ($i=$n-1; $i>0; $i--) {
$s = $this->struct[$i];
$d = $s[2];
if (($s[cPageType]&pgbitMenu)!=pgbitMenu) {
if ($i==1) {
$b=explode('/',$_SERVER['REQUEST_URI']);
$nav = '<li class="zli1"><a href="'.preg_replace('/\/[^\/]*$/','',$_SERVER['REQUEST_URI']).'/">'.$s[cPageTitre].'</a></li>'.$nav;
} else {
if ($d<=$td && ($s[cPageOn] || $isadmin)) {
//if ($d<$td) $this->parents[$s[0]] = $i;
$td = $d;
$f = $rewrite ? $s[cPageIdent].'.html' : $s[0];
if ($this->isPageAuth($i)) {
if (($s[cPageType]&pgbitPosSide)==pgbitPosSide) {
if (!isset($s[cPageOpt])||($s[cPageOpt]&1)) $nav = '<li class="zli'.$d.'">'.$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).'</li>'.$nav;
if ($s[cPageOpt]&2) $this->content['pnl2']=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).$this->content['pnl2'];
if ($s[cPageOpt]&4) $this->content['pnl3']=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).$this->content['pnl3'];
if ($s[cPageOpt]&8) $this->content['pnl4']=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).$this->content['pnl4'];
if ($s[cPageOpt]&16) $this->content['pnl5']=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).$this->content['pnl5'];
if ($s[cPageOpt]&32) $this->content['pnl6']=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).$this->content['pnl6'];
if ($s[cPageOpt]&64) $this->content['pnl7']=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).$this->content['pnl7'];
if ($s[cPageOpt]&128) $this->content['pnl8']=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).$this->content['pnl8'];
} else {
$nav = '<li class="zli'.$d.'"><a href="'.(($s[cPageType]&pgbitType)!=5?$base.$f:$s[cPageIdent]).'">'.$s[cPageTitre].'</a></li>'.$nav;
}
}
}
}
}
}
}
$td=$this->struct[$n+1][cPageRang];
for ($i=$n+1; $i<=$max; $i++) {
$s = $this->struct[$i];
$d = $s[cPageRang];
if ($d<=$td && ($s[cPageOn] || $isadmin)) {
$td = $d;
$f = $rewrite ? $s[cPageIdent].'.html' : $s[cPageIdent];
if ($this->isPageAuth($i)&&($s[cPageType]&pgbitMenu)!=pgbitMenu) {
if (($s[cPageType]&pgbitPosSide)==pgbitPosSide) {
if (!isset($s[cPageOpt])||($s[cPageOpt]&1)) $nav .= '<li class="zli'.$d.'">'.$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).'</li>';
if ($s[cPageOpt]&2) $this->content['pnl2'].=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0);
if ($s[cPageOpt]&4) $this->content['pnl3'].=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0);
if ($s[cPageOpt]&8) $this->content['pnl4'].=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0);
if ($s[cPageOpt]&16) $this->content['pnl5'].=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0);
if ($s[cPageOpt]&32) $this->content['pnl6'].=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0);
if ($s[cPageOpt]&64) $this->content['pnl7'].=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0);
if ($s[cPageOpt]&128) $this->content['pnl8'].=$this->get_content($s[cPageIdent],($s[cPageType]%2)==0);
} else {
$nav .= '<li class="zli'.$d.'"><a href="'.(($s[cPageType]&pgbitType)!=5?$base.$f:$s[cPageIdent].(isset($s[cPageOpt]['target'])?'" target="'.$s[cPageOpt]['target']:'')).'">'.$s[cPageTitre].'</a></li>';
}
}
}
}
if ($this->config['menu_type']==1) { //0=menu standard 1=menu déroulé fixe
$nav = '';
for ($i=1; $i<=$max; $i++) {
$s = $this->struct[$i];
$d = $s[cPageRang];
if ($s[cPageOn] || $isadmin) {
$f = $rewrite ? $s[cPageIdent].'.html' : $s[cPageIdent];
if ($this->isPageAuth($i)&&($s[cPageType]&pgbitMenu)!=pgbitMenu) {
if (($s[cPageType]&pgbitPosSide)==pgbitPosSide) {
if (!isset($s[cPageOpt])||($s[cPageOpt]&1)) $nav .= '<li class="zli'.$d.'">'.$this->get_content($s[cPageIdent],($s[cPageType]%2)==0).'</li>';
} else {
$nav .= '<li class="zli'.$d.($this->truepage==$i?' zon':'').'"><a href="'.(($s[cPageType]&pgbitType)!=5?$base.$f:$s[cPageIdent].(isset($s[cPageOpt]['target'])?'" target="'.$s[cPageOpt]['target']:'')).'">'.$s[cPageTitre].'</a></li>';
}
}
}
}
}
$this->content['menu'] = '<ul class="zul">'.$nav.'</ul>';
// asort($this->parents); // ? a supprimer (héritage zite)
}
//
function output() { // mettre constante pour multilangue !!
if (!$this->isdoc) {
$this->append($this->truepage?('<p align="right">'.($this->config['page_date']?('<small><br /><br /><br /><br /><br />Dernière modification le '.date("d/m/Y ", filemtime($this->cpath.'/'.$this->struct[$this->truepage][cPageIdent].'.txt')).'</small>'):'').($this->isPageAuth($this->truepage,cPageWrite)?'<a href=index.php?z=page_editor|'.$this->truepage.'><img src="deco/edit.png"></a>':'').'</p>'):'');
$this->content['main'] = $this->content['pre_main'].$this->content['main'].$this->content['post_main'];
if (!isset($this->content['page_desc'])) $this->content['page_desc'] = $this->config['site_description'];
if (!isset($this->content['page_keyword'])) $this->content['page_keyword']=$this->config['site_keywords'];
if ($this->config['version']<'ZITEPLUS 0.9.0') $this->content['menu'] = $this->content['pnl2'].$this->content['menu'].$this->content['pnl3'];
ob_start();
$zite = & $this;
require($this->ipath.'/'.$this->config['files_template']);
return ob_get_clean();
} else { return '';}
}
//
function adminbar() {
if ($_SESSION['showadminbar']) {
$admin = $_SESSION['zite_admin']==2;
$out = $_SESSION['zite_user']?$_SESSION['zite_user'].':':'Menu :';// $admin ? $this->get_message('admin_admintitle') : $this->get_message('admin_usertitle');
if ($_SESSION['zite_admin']) {
$out .= ' <a href="'.$this->base.'admin">'.$this->get_message('edit_admin').'</a>';
// if ($this->truepage && ($admin || !$this->struct[$this->truepage][5])) $out .= ' <a href="'.$this->base.'page_editor|'.$this->truepage.'">'.$this->get_message('edit').'</a>';
if ($this->truepage && ($this->isPageAuth($this->truepage,cPageWrite))) $out .= ' <a href="'.$this->base.'page_editor|'.$this->truepage.'">'.$this->get_message('edit').'</a>';
if ($this->truepage && $admin) $out .= ' <a href="'.$this->base.'source_editor|'.$this->truepage.'">'.$this->get_message('edit_source').'</a>';
if ($admin) {
$out .= ' <a href="'.$this->base.'config_editor">'.$this->get_message('edit_config').'</a>';
}
// $out .= ' <a href="'.$this->base.'files">'.$this->get_message('files_admin').'</a>';
}
if ($admin) {
// $out .= ' <a href="'.$this->base.'groupes">'.$this->get_message('groupes_admin').'</a>';
// $out .= ' <a href="'.$this->base.'tools">'.$this->get_message('tools_admin').'</a>';
// $out .= ' <a href="'.$this->base.'selectmodule">'.$this->get_message('selectmodule_admin').'</a>';
}
foreach ($this->module as $clef => $valeur ) {
if (($valeur[1]==1)&&(empty($valeur[cModulGroup]) || (array_intersect($valeur[2],$_SESSION['zite_usergroup'])) != array())) {
$out .= ' <a href="'.$this->base.'module|'.$valeur[0].'">'.$this->get_message($valeur[0].'_admin').'</a>';
}
}
$out .= ' <a href="'.$this->base.'logout">'.$this->get_message('logout').'</a>';
return '<div id="zadmin">'.$out.'</div>';
}
}
//
function get_content($key, $php=false, $stat=false) {
$key = preg_replace('/[^A-z0-9_-]/','',$key);
$file = $this->cpath."/$key.txt";
if (!file_exists($file)) {return false;}
if (($this->isstat) && $stat) {
@file_put_contents($this->filestat,date('Y-m-d H:i:s:u')." $_SERVER[REMOTE_ADDR] $_SERVER[REQUEST_URI] $key $_SESSION[zite_user]\r\n",LOCK_EX|FILE_APPEND);
}
if ($php) {
ob_start();
$zite = & $this;
include($file);
return ob_get_clean();
} else {
return file_get_contents($file);
}
}
//
function get_message($key) {
if (!$this->messages) $this->messages = @parse_ini_file($this->cpath.'/messages.ini', true);
return array_key_exists($key, $this->messages) ? $this->messages[$key] : "[$key]"; //: MESSAGE NON DEFINI - UNKNOWN MESSAGE]";
}
//
function get_data($key) {
return array_key_exists($key, $this->config) ? $this->config[$key] : "[$key : DONNEE NON DEFINIE - UNKNOWN DATA]";
}
//
function prepend($text) {$this->content['pre_main'] .= $text;}
//
function append($text) {$this->content['post_main'] = $text . $this->content['post_main'];}
//
//
// Fonctions-pages
//
function page_login() { // jpg-ok
$out = '';
if (!empty($_POST['id'])) {
$_POST['id'] = strtolower($_POST['id']);
if (array_key_exists($_POST['id'],$this->user) && (strcmp($this->user[$_POST['id']][0],md5($_POST['pass']))==0) && ($this->user[$_POST['id']][3]==false)) {
if ((!$this->config['user_cgu']) || $this->user[$_POST['id']][7]) {
$_SESSION['zite_user'] = $_POST['id']; // fixer utilisateur en cours
$_SESSION['zite_usergroup'] = $this->user[$_POST['id']][2]; // fixer groupes en cours
$_SESSION['showadminbar']=(bool)$_POST['showadminbar'];
if (in_array('webmaster',$_SESSION['zite_usergroup'])) { // un webmaster
$_SESSION['zite_admin'] = 1;
header('Location: '.$this->base.(isset($_POST['returnpage'])?$_SESSION['truepage']:''));
} elseif (in_array('admin',$_SESSION['zite_usergroup'])) { // un admin
$_SESSION['zite_admin'] = 2;
if ($this->config['version']==ZITEVER) {
header('Location: '.$this->base.(isset($_POST['returnpage'])?$_SESSION['truepage']:'admin'));
} else { // version pas à jour => proposer une migration automatique
if ($this->module['migration.php'][cModulOn]==0){
$file = $this->cpath.'/module.dta';
$module = &$this->module;
$module['migration.php'][cModulOn] = 1;
$this->writedata($file, $module);
}
header('Location: '.$this->base.'migration');
}
} else { // un autre type d'utilisateur
$_SESSION['zite_admin'] = 0;
$_SESSION['showadminbar']=false;
header('Location: '.$this->base.(isset($_POST['returnpage'])?$_SESSION['truepage']:''));
}
exit;
} else {
$id=$_POST['id'];
$pass=$_POST['pass'];
$showadminbar=(bool)$_POST['showadminbar'];//test090
$returnpage=$_POST['returnpage'];//test090
$out= $this->page_module('user_cgu');// il faut approuver les CGU;
}
} else $this->msgShow('errLOGIN');
}
$ver=phpversion();
if ($ver[0]<'5') { // Il faut php 5 !! ajout 0.8.1
$this->msgShow("Zite+ réclame PHP5 pour fonctionner: consulter la documentation",false);
}
if (empty($out)) {
$out .= '<form method="post" action="'.$this->base.'login" enctype="multipart/form-data"><table class="ztable">';
$out .= '<tr><td colspan="2"><h1>Identification</h1></td></tr>';
$out .= '<tr><td width ="180">'.$this->get_message('user_username').'</td><td><input name="id" type="text" value="'.$id.'"/></tr></td>';
$out .= '<tr><td>'.$this->get_message('user_password').'</td><td><input name="pass" type="password" value="'.$pass.'" /></td></tr><tr><td colspan="2"><br /></td></tr>';
$out .= '<tr><td></td><td>'.$this->get_message('login_showadminbar').'<input name="showadminbar" type="checkbox" value="1" checked/></td></tr><tr><td colspan="2"></td></tr>';
$out .= '<tr><td></td><td>'.$this->get_message('login_returnpage').'<input name="returnpage" type="checkbox" value="0" /></td></tr><tr><td colspan="2"><br /></td></tr>';
$out .= '<tr><td colspan="2"><input type="submit" name="Submit" value="'.$this->get_message('send').'" /></td></tr></table></form>';
}
return $out; //$this->get_message('login_form');
}
//
function page_logout() {
session_unset();
header('Location: '.$this->base);
exit;
}
//
function page_option() { // jpg: v0.8.3.a20 a modifier pour mettre message en paramètre et code en module (prévu v0.9.1)
if ($_SESSION['zite_admin']) {
$max = count($this->struct);
// $admin = $_SESSION['zite_admin']==2;
// $tools = $admin || $this->get_data('rights_structure')=='on';
$webmaster = in_array('webmaster',$_SESSION['zite_usergroup']);
$admin = in_array('admin',$_SESSION['zite_usergroup']);
$tools = $admin || $webmaster;
if ($tools) {
$c = $this->args[1];
$p = (int)$this->args[2];
if ($p>0 && $p<=$max) {
$page = & $this->struct[$p];
if ($this->isPageAuth($p,cPageWrite)) {
if ($c=="s") { // prendre les valeurs dans la page courante
$pg_titre = $page[cPageTitre];
$pg_desc = $page[cPageDesc];
$pg_keyw = $page[cPageKeyword];
$pg_type = $page[cPageType];
$pg_opt = $page[cPageOpt];
} else if ($c=="m") { // prendre les valeurs du formulaire
$pg_titre = trim(htmlentities(stripslashes($_POST['pg_titre'])));
$pg_desc = trim(htmlentities(stripslashes($_POST['pg_desc'])));
$pg_keyw = trim(htmlentities(stripslashes($_POST['pg_keyw'])));
$pg_type= (((int)$_POST['pg_type'])&~(pgbitMenu)) | ((int)$_POST['pg_visumenu']); //v090
$pg_opt = (int)$_POST['pg_opt'];
if ($admin) {
switch ($page[cPageType]&pgbitType) {
case 0: case 1 : //HTML
case 2 : //PHP
$pg_type = (((int)$pg_type)&(~3)) | ((int)$_POST['pg_htmlphp']);//v090 ($page[cPageType]&~pgbitType)|(int)$pg_type;
break;
default : //Autre
break;
}
}
} else return $this->get_message('not_possible');
$out = '<form method="post" action="'.$this->base.'option|m|'.$this->args[2].'" enctype="multipart/form-data"><table class="ztable">';
$out .= '<tr><td colspan="2"><h2><center>'.'Gestion des options de la page'.'</center></h2><td></tr>';
$out .= '</table>';
if (isset($_POST['abort'])) {
header('Location: '.$this->base.'admin#'.$this->args[2]);
} elseif ($err) {
$out .= $err;
} elseif (isset($_POST['submit'])) { // on va vraiment modifier les options de la page
$page[cPageTitre] = $pg_titre?$pg_titre:$this->get_message('page_default_title')." [$p]";
$page[cPageType] = (int)$pg_type;//v090 ($page[cPageType]&~pgbitType)|(int)$pg_type;
if ($pg_desc) {
$page[cPageDesc] = $pg_desc;
} else unset($page[cPageDesc]);
if ($pg_keyw) {
$page[cPageKeyword] = $pg_keyw;
} else unset($page[cPageKeyword]);
if (($page[cPageType]&pgbitPosSide)==pgbitPosSide) { // C'est un panneau latéral
$page[cPageOpt] = $pg_opt;
}
$this->writeStruct(true); // false devrait suffire => à vérifier
header('Location: '.$this->base.'admin#'.$this->args[2]);
exit;
}
// pavé: HTML & META desc
$out .= '<table class="ztable" id="pv">';
$out .= '<tr><td>Nom de la page: </td><td><input name="pg_titre" type="text" value="'.$pg_titre.'" />';
$out .= '<tr><td></td><td><i>Ce nom permet d\'identifier facilement la page dans la liste des pages.C\'est aussi le titre de la page dans le menu (si celle-ci y est visible). Le nom de la page est obligatoire.<i></td></tr>';
$out .= '<tr><td style="width:200px"></td></tr>';
$out .= '<tr><td>Type de page: </td><td>';
$out .= '<input name="pg_htmlphp" type="radio" value="1" '.($pg_type%2==1 ? 'checked ' : '').($_SESSION['zite_admin']!=2?'disabled':'').' />HTML';
$out .= '<input name="pg_htmlphp" type="radio" value="2" '.($pg_type%2==0 ? 'checked ' : '').($_SESSION['zite_admin']!=2?'disabled':'').' />PHP</td></tr>';
$out .= '<tr><td></td><td><i>La plupart des pages sont de type HTML. Pour des raisons de performances et de sécurité, utilisez les pages PHP uniquement si vous maîtrisez le langage PHP.</i></td></tr>';
// pavé: Voulez-vous voir la page dans le menu
//$out .= '<table id="visumenu" class="ztable" '.(($pg_type&pgbitMenu)|($pg_type&pgbitType)==5?'style="display:none;"':'').'>';
$out .= '<tr><td>Page visible dans le menu</td>';
$out .= '<td><input type="radio" name="pg_visumenu" value="0" '.($pg_type&pgbitMenu?'':'checked').'>Oui ';
$out .= '<input type="radio" name="pg_visumenu" value="'.pgbitMenu.'" '.($pg_type&pgbitMenu?'checked':'').'>Non</td></tr>';
$out .= '<tr><td></td><td><i>si vous répondez non, la page ne sera pas visible dans le menu mais pourra tout de même être appelé directement depuis une autre page</i></td></tr>';
//
$out .= '<tr><td>Bref description de la page</td><td> <input name="pg_desc" id="pg_desc" type="text" value="'.($pg_desc?$pg_desc:'').'" size=50><i> facultatif</i></td></tr>';
$out .= '<tr><td></td><td><i>Cette description succinte est utilisé par le "plan de site" et par certains moteurs de recherche pour afficher le résultat de celle-ci</i></td></tr>';
$out .= '<tr><td>Mots clefs</td><td><input name="pg_keyw" id="pg_keyw" type="text" value="'.($pg_keyw?$pg_keyw:'').'" size=50><i> facultatif</i></td></tr>';
$out .= '<tr><td></td><td><i>Ces mots clefs ne sont de nos jours plus tellement utilisé par les moteurs de recherche (en particulier Google). Les mots clefs doivent être séparé par des virgules</i></td></tr>';
// pavé: panneau latéral
if (($page[cPageType]&pgbitPosSide)==pgbitPosSide) { // C'est un panneau latéral
$disabled = ($isadmin || ($_SESSION['zite_admin']==1))?'disabled':'';
$out .= '</table><table class="ztable" id="pnl">';
$out .= '<tr><td colspan=2>Type de panneau latéral:<td><tr><tr><td>';
$out .= '<input name="pg_opt" type="radio" value="1" '.(($pg_opt&1)==1 ? 'checked ' : '').$disabled.' /> <b>1</b>-Intégré dans le menu<br/>';
$out .= '<input name="pg_opt" type="radio" value="2" '.(($pg_opt&2)==2 ? 'checked ' : '').$disabled.' /> <b>2</b>-Au dessus du menu<br/>';
$out .= '<input name="pg_opt" type="radio" value="4" '.(($pg_opt&4)==4 ? 'checked ' : '').$disabled.' /> <b>3</b>-Au dessous du menu<br/>';
$out .= '<input name="pg_opt" type="radio" value="8" '.(($pg_opt&8)==8 ? 'checked ' : '').$disabled.' /> <b>4</b>-Coté opposé au menu<br/>';
$out .= '<input name="pg_opt" type="radio" value="16" '.(($pg_opt&16)==16 ? 'checked ' : '').$disabled.' /> <b>5</b>-Bandeau supérieur<br/>';
$out .= '<input name="pg_opt" type="radio" value="32" '.(($pg_opt&32)==32 ? 'checked ' : '').$disabled.' /> <b>6</b>-Bandeau inférieur<br/>';
$out .= '<input name="pg_opt" type="radio" value="64" '.(($pg_opt&64)==64 ? 'checked ' : '').$disabled.' /> <b>7</b>-Avant la page centrale<br/>';
$out .= '<input name="pg_opt" type="radio" value="128" '.(($pg_opt&128)==128 ? 'checked ' : '').$disabled.' /> <b>8</b>-Aprés la page centrale<br/><br/><br/>';
$out .= '</td><td><img src=deco/pnl01.png></img></td></tr>';
}
//
$out .= '</table><table class="ztable"><tr><td><input type="submit" name="submit" value="'.$this->get_message('submit').'" ><input name="pg_type" type="hidden" value="'.$pg_type.'" ><input name="save" type="hidden" value="1" ><input name="modulename" type="hidden" value="'.$this->args[2].'" ><input name="group" type="hidden" value="'.$g1.'" ><input name="readwrite" type="hidden" value="'.$readwrite.'" ></td><td><input type="submit" name="abort" value="'.$this->get_message('abort').'" ></td></tr>';
$out .= '</table></form>';
return $out;
} else return $this->get_message('not_allowed');
} else return $this->get_message('not_possible');
} else return $this->get_message('not_allowed');
} else {
return $this->get_message('not_allowed');
}
}
//
function page_admin() {
if ($_SESSION['zite_admin']) {
$max = count($this->struct);
// $admin = $_SESSION['zite_admin']==2;
// $tools = $admin || $this->get_data('rights_structure')=='on';
$webmaster = in_array('webmaster',$_SESSION['zite_usergroup']);
$admin = in_array('admin',$_SESSION['zite_usergroup']);
$tools = $admin || $webmaster;
// Opérations
if ($tools) { //
$c = $this->args[1];
$p = (int)$this->args[2];
if ($p>0 && $p<=$max) {
$change = true;
$dta = & $this->struct[$p];
$power = $admin || $this->isPageAuth($p,cPageWrite);
if ($c=='l' && $dta[cPageRang]>1) {// left
if ($dta[cPageRang]>1) $dta[cPageRang]--;
if (($dta[cPageRang]==1)&&(isset($dta[cPageWrite]))) {//pour voir créer page racine
$dta[cPageWrite]=$this->struct[$dta[cPagePere]][cPageWrite]; //0.9.0.a3-1/9/2009
}
} elseif ($c=='r') {// right
$dta[cPageRang]++;
} elseif ($c=='u') {// up
if (($p>1)&&($this->isPageAuth($p-1,cPageWrite))) $this->swap($p);
} elseif ($c=='d') {// down
if (($p<$max)&&($this->isPageAuth($p+1,cPageWrite))) $this->swap($p+1);
} elseif ($c=='s' && $power) {// Status
$dta[cPageOn] = $dta[cPageOn]==1 ? 0 : 1;
} else {
$change = false;
}
if ($change) $this->writeStruct(true);
header('Location: '.$this->base.'admin#'.$this->args[2]); // positionner correctement la page
}
}
// Affichage structure
$i = 0;
foreach ($this->struct as $k => $v) {
$i++;
if ($this->isPageAuth($k,cPageRead)) {
$pw = $this->isPageAuth($k,cPageWrite); // prendre les droits en écriture sur la page
$tool1 = $tool2 = '';
if ($tools) {
$tb = ' <a href="'.$this->base.'admin|';
if ($pw) {
$tool1 .= $v[2]>1 ? $tb.'l|'.$k.'"><img src="deco/l1.png" /></a>' : ' <img src="deco/l0.png" />';
$tool1 .= ' <a href="'.$this->base.'page_new|'.'n|'.$k.'"><img src="deco/a.png" /></a>';
$tool1 .= $tb.'r|'.$k.'"><img src="deco/r1.png" /></a>';
}
$tool2 .= ($k>1)&&($pw) ? $tb.'u|'.$k.'"><img src="deco/u1.png" /></a>' : '<img src="deco/u0.png" />';
$tool2 .= ($k<$max)&&($pw) ? $tb.'d|'.$k.'"><img src="deco/d1.png" /></a>' : ' <img src="deco/d0.png" />';
if ($admin) {
$tool2 .= ' <a href="'.$this->base.'selectgroup|'.$k.'|i|'.cPageWrite.'"> <img src="deco/kw'.($v[cPageWrite] ?'1' : '0').'.png" title="Groupes d\'utilisateurs pouvant modifier la page"/></a>';
} else {
$tool2 .= '<img src="deco/kw'.($v[cPageWrite] ? '1' : '0').'.png" title="Groupes d\'utilisateurs pouvant modifier la page"/>';
}
if ($admin || $pw) {//$v[cPageWrite]) {
$tool2 .= $v[cPageOn] ? $tb.'s|'.$k.'"><img src="deco/s1.png" /></a>' : $tb.'s|'.$k.'"><img src="deco/s0.png" /></a>';
$tool2 .= $max>1 ? ' <a href="'.$this->base.'delete|'.$k.'"><img src="deco/e1.png" /></a>' : ' <img src="deco/e0.png" />';
} else {
$tool2 .= $v[cPageOn] ? ' <img src="deco/s1.png" />' : ' <img src="deco/s0.png" />';
$tool2 .= ' <img src="deco/e0.png" />';
}
if ($admin) {
$tool2 .= ' <a href="'.$this->base.'selectgroup|'.$k.'|i|'.cPageRead.'"><img src="deco/kr'.($v[cPageRead]?'1': '0').'.png" title="Groupes d\'utilisateurs pouvant consulter la page" /></a>';
} else {
$tool2 .= '<img src="deco/kr'.($v[cPageRead] ? '1':'0').'.png" title="Groupes d\'utilisateurs pouvant consulter la page" />';
}
}
$nav .= '<tr bgcolor="#'.($i%2 ? 'DDDDDD' : 'EEEEEE').'"><td>'."<a name='$i' href='#$i'>".$i.'</a>'.'</td><td>'.$tool1.'</td><td>'.str_repeat(' ',3*--$v[2]);
$nav .= ($this->isPageAuth($k,cPageWrite) ? ('<a href="'.$this->base.($v[cPageType]=='5'?'page_new|m|':'option|s|').$k.'" title="définir les options de la page"><img src="deco/config.png" /></a> ') : '');
$nav .= (!($this->isPageAuth($k,cPageWrite) ) ? $v[1] : ($_SESSION['zite_admin']==2 ? '<a href="'.$this->base.($v[cPageType]=='5'?'page_new|m|':'source_editor|').$k.'"><img src="deco/c.png" /></a> ' : '').'<a href="'.$this->base.((($v[cPageType]&pgbitType)>='1')&&(($v[cPageType]&pgbitType)<='2')?'page_editor|':(($v[cPageType]&pgbitType)=='5'?'page_new|m|':'page_extended|')).$k.'">'.$v[cPageTitre].'</a>');
$nav .= ' <a href="'.($v[3]!=5?'?perma=':'').$v[0].'" style="font-size:75%;color:#AAA">'.$v[0].'</a>';
$nav .='</td><td>'.$tool2.'</td></tr>';
}
}
return '<p><table align="center" border="0" cellspacing="0" cellpadding="2" class="ztable"><tr><td colspan="4" align="center">'.$this->get_message('edit_structure').'</td></tr>'.$nav.'</table></p>';
} else {
return $this->get_message('not_allowed');
}
}
//
function page_delete() {//ok le 26/03/2009
$max = count($this->struct);
$p = (int)$this->args[1];
if ($p>0 && $p<=$max && $max>1) {
// $admin = $_SESSION['zite_admin']==2;
$webmaster = in_array('webmaster',$_SESSION['zite_usergroup']);
$admin = in_array('admin',$_SESSION['zite_usergroup']);
$tools = $admin || ($webmaster&&($this->isPageAuth($p,cPageWrite)));
if ($tools) {
if ($this->args[2]=='ok') {
unlink($this->cpath.'/'.$this->struct[$p][0].'.txt');
for($i=$p; $i<$max; $i++) $this->struct[$i] = $this->struct[$i+1];
unset($this->struct[$max]);
$this->writeStruct(true);
header('Location: '.$this->base.'admin#'.$this->args[1]);
} else {
return $this->get_message('delpage_confirm').'<p class="zalert"><a href="'.$this->base.'delete|'.$p.'|ok">'.$this->get_message('delpage').'<strong>'.$this->struct[$p][1].'</strong></a></p>';
}
} else {
return $this->get_message('not_allowed');
}
} else {
return $this->get_message('not_possible');
}
}
//
function page_page_editor() {
$pageid = (int)$this->args[1];
$pagedesc = & $this->struct[$pageid];
if ($this->isPageAuth($pageid,cPageWrite)) {
$r_in = array('<?', '<?php', '?'.'>', '<?=');
$r_out = array('<!--?', '<!--?php', '?-->', '<!--?=');
$file = $this->cpath.'/'.$pagedesc[cPageIdent].'.txt';
if (file_exists($file)) {
$this->truepage = $pageid;
if ($_POST['save']==1) {
$pagedesc[cPageTitre] = trim(htmlentities(stripslashes($_POST['title'])));
if (empty($pagedesc[cPageTitre])) $pagedesc[cPageTitre] = $this->get_message('page_default_title');
$source = str_replace($r_out, $r_in, stripslashes($_POST['source']));
switch ($pagedesc[cPageType]&pgbitType) {
case 1 :
case 2 :
$pagedesc[cPageType] = ($pagedesc[cPageType]&~pgbitType)|(int)$_POST['code'];
break;
default :
break;
}
$rslt = $this->WriteStruct() && $this->writefile($file, $source);
$out = $rslt ? $this->get_message('done_ok') : $this->get_message('done_failed');
$out = '<p class="zalert">'.$out.' - <a href="'.$this->base.$pageid.'">'.$this->get_message('view_page').'</a>'.'</p>';
}
$out .= '<form action="'.$this->base.'page_editor|'.$pageid.'" method="post">';
$out .= $this->get_message('edit_title') . ': <input name="title" type="text" value="'.$pagedesc[1].'" />';
if ($_SESSION['zite_admin']==2) {
$out .= '<input name="code" type="radio" value="1" '.($pagedesc[cPageType]%2==1 ? 'checked="checked" />' : ' />').'HTML';
$out .= '<input name="code" type="radio" value="2" '.($pagedesc[cPageType]%2==0 ? 'checked="checked" />' : ' />').'PHP';
} else {
$out .= '<input name="code" type="hidden" value="'.$pagedesc[cPageType].'" />';
}
$out .= ' <input name="save" type="hidden" value="1" /><input type="submit" name="Submit" value="'.$this->get_message('submit').'" /><a href="'.$this->base.'admin#'.$pageid.'"> '.$this->get_message('edit_admin').'</a><br />';
// Chargement de l'éditeur
$edfile = $this->zpath. '/'.$this->get_data('editor').'.php';
$content = file_get_contents($file);
if (file_exists($edfile)) {
// Editeur externe
ob_start();
include($edfile);
$out .= ob_get_clean();
} else {
// Editeur brut
$out .= '<textarea style="width:100%;height:500px;" name="source" id="source">'.$content.'</textarea>';
}
$out .= '</form>';
return $out;
} else {
return $this->get_message('errorNOFILE');
}
} else {
return $this->get_message('not_allowed');
}
}
//
function page_source_editor() {
if ($_SESSION['zite_admin']==2) {
$pageid = $this->args[1];
if (substr($pageid, 0, 5)=='files' && array_key_exists($pageid, $this->config)) {
$filename = $this->get_data($pageid);
$file = $this->ipath.'/'.$filename;
} elseif (($pageid=='config.ini') || ($pageid=='messages.ini')) {
$filename = $pageid;
$file = $this->cpath.'/'.$filename;
} elseif ((int)$pageid && (int)$pageid<=count($this->struct)) {
$filename = $this->struct[(int)$pageid][1];
$file = $this->cpath.'/'.$this->struct[(int)$pageid][0].'.txt';
$this->truepage = (int)$pageid;
}
$out ='';
if (file_exists($file)) {
if (array_key_exists('source', $_POST)) {
if ($this->truepage==$pageid) {
$oldname = $this->struct[(int)$pageid][0];
$newname = preg_replace('/[^A-z0-9_-]/','',$_POST['permaname']);
if ($newname!=$oldname) {
$newfile = $this->cpath.'/'.$newname.'.txt';;
if(file_exists($newfile)) {
$out .= '<p class="zalert">'.$this->get_message('permaname_duplicate').' ('.$newname.')'.'</p>';
} else {
$oldfile = $this->cpath.'/'.$oldname.'.txt';
$file = $newfile;
unlink($oldfile);
$this->struct[(int)$pageid][0] = $newname;
$this->writeStruct();
}
}
}
$tmp= $this->writefile($file, stripslashes($_POST['source'])) ? $this->get_message('done_ok') : $this->get_message('done_failed');
$out .= '<p class="zalert">'.$tmp.' : '.$filename.'</p>';
}
$out .= '<form action="'.$this->base.'source_editor|'.$pageid.'" method="post"><div id="zadmin">';
$out .= $this->get_message('edit_file') . ' : '.$filename;
$out .= ' <input type="submit" name="Submit" value="'.$this->get_message('submit').'" /><a href="'.$this->base.'admin#'.$pageid.'"> '.$this->get_message('edit_admin').'</a></div>';
if ($this->truepage==$pageid) {
$out .= $this->get_message('edit_permaname').'<input type="text" name="permaname" value="'.$this->struct[(int)$pageid][0].'" /><br />';
}
$out .= '<textarea style="width:100%;height:500px;" name="source" id="source">'.htmlentities(file_get_contents($file)).'</textarea>';
$out .= '</form>';
return $out;
} else {
return $this->get_message('errorNOFILE');
}
} else {
return $this->get_message('not_allowed');
}
}
//
function page_config_editor() {
if ($_SESSION['zite_admin']==2) {
$file = $this->cpath.'/config.ini';
if (file_exists($file)) {
ksort($this->config);
if (array_key_exists('save', $_POST)) { // Enregistrement
foreach($_POST as $k => $v) {
if (substr($k,0,1)=='_') {
$k2 = substr($k, 1, strlen($k)-1);
if (substr($k2, -4)=='pass') {
if (strlen($v)) $this->config[$k2] = md5($v);
} else {
$this->config[$k2] = htmlentities(stripslashes($v));
}
}
}
$out = '<p class="zalert">'.($this->writeconfig($file, $this->config) ? $this->get_message('done_ok') : $this->get_message('done_failed')).'</p>';
}
$msg = $this->get_message('edit_source');
$out .= '<form action="'.$this->base.'config_editor" method="post">';
$out .= '<table style="width:100%">';
$out .= '<tr bgcolor="#'.(++$i%2 ? 'DDDDDD' : 'EEEEEE').'"><td><strong>config.ini</strong></td><td><a href="'.$this->base.'source_editor|config.ini">'.$msg.'</a></td></tr>';
$out .= '<tr bgcolor="#'.(++$i%2 ? 'DDDDDD' : 'EEEEEE').'"><td><strong>messages.ini</strong></td><td><a href="'.$this->base.'source_editor|messages.ini">'.$msg.'</a></td></tr>';
foreach($this->config as $k => $v) {
if (substr($k, 0, 6)=='files_') $out .= '<tr bgcolor="#'.(++$i%2 ? 'DDDDDD' : 'EEEEEE').'"><td><strong>'.$v.'</strong></td><td><a href="'.$this->base.'source_editor|'.$k.'">'.$msg.'</a></td></tr>';
}
foreach($this->config as $k => $v) $out .= '<tr bgcolor="#'.(++$i%2 ? 'DDDDDD' : 'EEEEEE').'"><td>'.$k.'</td><td><input name="_'.$k.'" type="text" value="'.(substr($k, -4)=='pass' ? '' : $v).'" style="width:80%" /></td></tr>';
$out .= '<tr bgcolor="#'.(++$i%2 ? 'DDDDDD' : 'EEEEEE').'"><td colspan="2" align="center"><input type="submit" name="Submit" value="'.$this->get_message('submit').'" /></td></tr>';
$out .= '</table>';
$out .= '<input type="hidden" name="save" value="1" />';
$out .= '</form>';
return $out;
} else {
return $this->get_message('errorNOFILE');
}
} else {
return $this->get_message('not_allowed');
}
}
//
//
function page_sitemap() { // réécriture, ok le 04.02.2009
$base = $this->rewrite ? ($this->rewrite===2?$this->config['files_index']:'') : $this->basep;
$nav = '';
foreach ($this->struct as $idpage => $page) {
if ($page[cPageOn] && $this->isPageAuth($idpage) && ($page[cPageIdent][0]!='_')) {
$dtlastmaj = ($page[cPageType]&pgbitType)==5?'': ' '.date("d/m/Y ", filemtime($this->cpath.'/'.$page[cPageIdent].'.txt')).'';
$nav .= '<tr><td style="width:500px"><li class="zli'.$page[cPageRang].'"><a href="'.(($page[cPageType]&pgbitType)!=5?($base.($this->rewrite ? $page[0].'.html' : $page[cPageIdent])):$page[cPageIdent]).'">'.$page[cPageTitre].'</a></td><td>'.$dtlastmaj.'</li></td></tr>';
}
}
return '<h1>'.$this->get_message('sitemap').'</h1><ul class="zul"><table>'.$nav.'</table></ul></p>';
}
// Autres fonctions
function writefile($file, $content) {
$h = fopen($file, 'w');
if ($h) {
$r = fwrite($h, $content);
fclose($h);
return $r;
}
return false;
}
//
function writeconfig($file, $content) {
foreach ($content as $k => $v) $dta .= "\n$k = \"".str_replace('"', '"', $v).'"';
return $this->writefile($file,trim($dta));
}
//
function writedata($file, $content) {
$zite = & $this;
return $this->writefile($file, serialize($content));
}
//
function swap($p) {
$t = $this->struct[$p-1];
$this->struct[$p-1]=$this->struct[$p];
$this->struct[$p]=$t;
$this->buildStruct();
}
function swap2($a,$b) {
$t = $this->struct[$a];
$this->struct[$a]=$this->struct[$b];
$this->struct[$b]=$t;
$this->buildStruct();
}
//
function page_selectgroup() { //jpg
if ($_SESSION['zite_admin']) {
if ($_POST['save']==1) { // Sauvegarder les changements
$dta = & $this->struct[$_POST['page']];
$readwrite = $_POST['readwrite'];
$dta[$readwrite] = empty($_POST['group'])?array():explode(':',$_POST['group']);
// $this->writedata($this->cpath.'/structure.dta', $this->struct);
$this->writeStruct();
header('Location: '.$this->base.'admin');
} else {
$max = count($this->struct);
$p = (int)$this->args[1];
if ($p>0 && $p<=$max && $max>1) {
if ($this->struct[$p][cPageWrite]==0 || $_SESSION['zite_admin']==2) { // droit de modifier
if ($this->args[2]=='i') { // première initialisation
$readwrite = $this->args[3];
$g = $this->struct[$p][$readwrite];
$g1 = empty($g)?'':implode(':',$g);
}
elseif ($this->args[2]=='g') { // Mise à jour
$g = (empty($this->args[3])?array():explode(':', $this->args[3]));
if (in_array($this->args[4],$g)) {
$g2[] = $this->args[4];
$g = array_diff($g, $g2);
}
else {
$g[]=$this->args[4];
}
$g1 = empty($g)?'':implode(':',$g);
$readwrite = $this->args[5];
}
$f = $this->group; // copie du tableau des groupes
uksort($f, create_function('$a, $b', 'return strcmp($a[0], $b[0]);'));
$out = '<form method="post" action="'.$this->base.'selectgroup" enctype="multipart/form-data"><table class="ztable">';
$out .= '<tr><td><h2>'.($readwrite==cPageWrite?$this->get_message('selectgroup_write'):$this->get_message('selectgroup_read')).'<center><strong><h1>'.$this->struct[$p][1].'</h1></strong></center></h2><td></tr>';
// Afficher la liste de tous les groupes
$out .= '<tr><td colspan="2"><input type="submit" name="Submit" value="'.$this->get_message('submit').'" /><input name="save" type="hidden" value="1" /><input name="page" type="hidden" value="'.$p.'" /><input name="group" type="hidden" value="'.$g1.'" /><input name="readwrite" type="hidden" value="'.$readwrite.'" /></td></tr></table></form>';
$out .= '<table class="ztable">';//<tr><td><h2>Liste de tous les groupes</></td></tr>';
$out .= '<tr bgcolor="#CCCCCC"><td>'.$this->get_message('groupes_name').'</td><td>'.$this->get_message('groupes_desc').'</td><td></td></tr>';
foreach ($f as $clef => $valeur ) {
$out .= '<tr bgcolor="#'.(++$i%2 ? 'DDDDDD' : 'EEEEEE').'"><td>'.$clef.'</a></td><td>'.$valeur.'</td>';
$out .= '<td><a href="'.$this->base.'selectgroup|'.$p.'|g|'.$g1.'|'.$clef.'|'.$readwrite.'">'.(in_array($clef,$g)?'<img src="deco/dl1.png" />':'<img src="deco/k0.png" />').'</a></td></tr>';
}
$out .= '</table>';
$out .= $readwrite==cPageWrite?$this->get_message('selectgroup_commentwrite'):$this->get_message('selectgroup_commentread');
return $out;
//$this->get_message('delpage_confirm').'<p class="zalert"><a href="'.$this->base.'delete|'.$p.'|ok">'.$this->get_message('delpage').'<strong>'.$this->struct[$p][1].'</strong></a></p>';
}
else {
return $this->get_message('not_allowed');
}
} else {
return $this->get_message('not_possible');
}
} }else {
return $this->get_message('not_allowed');
}
}
// Vérifier les droits en lecture sur la page (jpg)
function isPageAuth($nopage, $typedroit=6) {
// Hériter des droits des parents si pas de droit propres
while (empty($this->struct[$nopage][$typedroit]) && ($this->struct[$nopage][cPageRang]!=1)&&($nopage>1)) {
$nopage = $this->struct[$nopage][cPagePere]; // Prendre la page parente
}
$page = $this->struct[$nopage];
$m = isset($_SESSION['zite_usergroup'])?array_intersect($page[$typedroit] ,$_SESSION['zite_usergroup']):null; // enlever message erreur si valeur null
return ((empty($page[$typedroit])&&($typedroit==cPageRead)) || !empty($m) || $_SESSION['zite_admin']==2);
}
// reconstruire la liste des parents (jpg)
function buildStruct() {
$max = count($this->struct);
$pere = array();
for ($i=1; $i<=$max; $i++) {
$p = $this->struct[$i];
$pere[$p[cPageRang]] = $i;
if ($p[cPageRang]==1) {
$this->struct[$i][cPagePere]=1;
} else {
$this->struct[$i][cPagePere]=$pere[$p[cPageRang]-1];
}
}
}
// Enregister la structure des pages (jpg)
function writeStruct($rebuild = false) {
if ($rebuild) {
$this->buildStruct();
}
return $this->writedata($this->cpath.'/structure.dta', $this->struct);
}
//
function IsAuthModule($modulename) {//a tester:pas en service
if (empty($modulename) || !array_key_exists($modulename,$this->module)
|| ($this->module[$modulename][cModulOn]!=1)
|| !(file_exists($this->zpath.'/module/'.$modulename)))
return $this->get_message('not_possible');
if (!empty($this->module[$modulename][cModulGroup])&&($_SESSION['zite_admin']!=2)&&(array_intersect($this->module[$modulename][cModulGroup],$_SESSION['zite_usergroup'])== array()))
return $this->get_message('not_allowed');
}
// implementation de la fonction de module avec gestion de la sécurité
function page_module($modulename="",$opt="") {//jpg
$m = empty($modulename)?strtolower($this->args[1]):strtolower($modulename);
if (empty($modulename)) $modulename = strtolower($this->args[1].'.php');
else $modulename .= '.php';
if (!empty($modulename) && array_key_exists($modulename,$this->module) && ($this->module[$modulename][cModulOn]==1) && (file_exists($this->zpath.'/module/'.$modulename))) {
if (empty($zite->module[$modulename][cModulGroup])||($_SESSION['zite_admin']==2)||(array_intersect($this->module[$modulename][cModulGroup],$_SESSION['zite_usergroup'])!= array())) {
$mo = Tmodule::create_module($m);
return Tmodule::execute_module($m,$mo,'dojob',$opt);
} else return $this->get_message('not_allowed');
} else return $this->get_message('not_possible');
}
//
function msgShow($msg,$cte=true) {//jpg
$this->prepend('<div class="zalert">'.($cte?$this->get_message($msg):$msg).'</div>');
return false; // ajout 0.8.3 a5
}
function debug($msg) {print "|<code>".$msg."|</code><br />";}
function page_from_ident($idpage) {//090
$z=false;
foreach ($this->struct as $k => $v) if ($v[cPageIdent]==$idpage) $z=$k; // break à mettre
return $z;
}
function NO_magic_quotes() {
if (get_magic_quotes_gpc()) {//090
foreach ($_POST as $key => $value) {
if (is_string($_POST[$key])) $_POST[$key] = stripslashes($_POST[$key]);
}
}
}
function makeURL($idpage,$full=false,$modeurl=-1) {//à finir
$url = '';
if ($modeurl==-1) $modeurl = $this->rewrite;
$base = $modeurl ? ($modeurl===2?$this->config['files_index']:'') : $this->basep;
if (isset($this->struct[$idpage])) {
$page = $this->struct[$idpage];
$url = ($page[cPageType]&pgbitType)!=5?($base.($modeurl ? $page[cPageIdent].'.html' : $page[cPageIdent])):$page[cPageIdent];
}
if ($full && (strpos('http://', $url)===false)) {
$url = $this->rewritebase.$url;
}
return $url;
}
}
// fil d'ariane
function filariane() {//091
$rewrite = $this->rewrite && !$isadmin;
$base = $this->rewrite ? ($isadmin ? $this->basep.$this->get_data('navig_admin') : ($this->rewrite===2?$this->config['files_index']:' ')) : $this->basep;
$out='';
$nopage=$this->truepage;
if ($this->truepage) {
while (($this->struct[$nopage][cPageRang]!=1)&&($nopage>1)) {
$out = (strlen($out)?'<a href="'.$base.($rewrite ? $this->struct[$nopage][cPageIdent].'.html' : $this->struct[$nopage][cPageIdent]).'">'.$this->struct[$nopage][cPageTitre].'</a> > ':$this->struct[$nopage][cPageTitre]).$out;
$nopage = $this->struct[$nopage][cPagePere]; // Prendre la page parente
}
$out = '<div id="filariane">chemin: '.(strlen($out)?'<a href="'.$base.($rewrite ? $this->struct[$nopage][cPageIdent].'.html' : $this->struct[$nopage][cPageIdent]).'">'.$this->struct[$nopage][cPageTitre].'</a> > ':$this->struct[$nopage][cPageTitre]).$out.'</div>';
}
return $out;
}
?>
et mon template :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php echo ($zite->rewrite===2?'<base href="'.$zite->rewritebase.'"/>':"") ?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?php echo $zite->content['menu_title'].', '.$zite->get_data('site_title') ?></title>
<META NAME="description" CONTENT="<?php echo $zite->content["page_desc"];?>">
<META NAME="keywords" CONTENT="<?php echo $zite->content["page_keyword"];?>">
<link href="<?php echo $zite->config['files_style'] ?>" rel="stylesheet" type="text/css" />
<!--[if IE ]>
<link href="style-ie.css" rel="stylesheet" type="text/css" />
<![endif]-->
</head>
<body>
<div id="global">
<div id="admin"><a href="index.php?z=login"> administration </a> </div>
<div id="entete"><div id="image_entete"></div></div>
<div id="centre">
<div id="menu"><div id="menu_bloc"></div><?php echo $zite->content['menu'] ?><div id="logo"></div></div>
<div id="principal"><div id="titre_bloc"> <div id="titre">
<?php echo $zite->filariane() ?>
</div> </div><div id="texte_principal">
<?php echo $zite->content['main'] ?></div></div>
</div>
<div id="bot">Tous droits réservés "Profil Emploi" 2010 - Création / Webdesign : <a href="http://www.dixit-rc.com">www.dixit-rc.com</a> - Site motorisé par <a href="http://www.zitecms.org/zite/">Zite</a></div>
</div>
</body>
</html>
Hors ligne
C'est ton zite.php qui n'est pas modifié correctement...
... comme quoi, tu aurais du relire le post http://www.zitecms.org/zite/forum/viewt … 4946#p4946
je te remets la fin du fichier zite.php correctement modifiée:
function makeURL($idpage,$full=false,$modeurl=-1) {//à finir
$url = '';
if ($modeurl==-1) $modeurl = $this->rewrite;
$base = $modeurl ? ($modeurl===2?$this->config['files_index']:'') : $this->basep;
if (isset($this->struct[$idpage])) {
$page = $this->struct[$idpage];
$url = ($page[cPageType]&pgbitType)!=5?($base.($modeurl ? $page[cPageIdent].'.html' : $page[cPageIdent])):$page[cPageIdent];
}
if ($full && (strpos('http://', $url)===false)) {
$url = $this->rewritebase.$url;
}
return $url;
}
// J'ai enlevé un } ici
// fil d'ariane
function filariane() {//091
$rewrite = $this->rewrite && !$isadmin;
$base = $this->rewrite ? ($isadmin ? $this->basep.$this->get_data('navig_admin') : ($this->rewrite===2?$this->config['files_index']:' ')) : $this->basep;
$out='';
$nopage=$this->truepage;
if ($this->truepage) {
while (($this->struct[$nopage][cPageRang]!=1)&&($nopage>1)) {
$out = (strlen($out)?'<a href="'.$base.($rewrite ? $this->struct[$nopage][cPageIdent].'.html' : $this->struct[$nopage][cPageIdent]).'">'.$this->struct[$nopage][cPageTitre].'</a> > ':$this->struct[$nopage][cPageTitre]).$out;
$nopage = $this->struct[$nopage][cPagePere]; // Prendre la page parente
}
$out = '<div id="filariane">chemin: '.(strlen($out)?'<a href="'.$base.($rewrite ? $this->struct[$nopage][cPageIdent].'.html' : $this->struct[$nopage][cPageIdent]).'">'.$this->struct[$nopage][cPageTitre].'</a> > ':$this->struct[$nopage][cPageTitre]).$out.'</div>';
}
return $out;
}
} // pour le mettre ici
?>
a+
jean-paul
Hors ligne
C'est ton zite.php qui n'est pas modifié correctement...
... comme quoi, tu aurais du relire le post http://www.zitecms.org/zite/forum/viewt … 4946#p4946
Pas taper !...
je te promet que je l'ai relu mais n'étant pas calé en PHP (loin de là), je suis passé à côté. J'ai tenté de rajouter un crochet en bas de ma fonction filariane, mais sans voir que c'était juste un problème de position dans le code.... j'y arrive mieux en html...
Merci en tous cas, c'est bon pour moi !... "tout il est impecc"
Hors ligne