Bonjour,
mon plugin s'appelle chgheaderonload, c'est un élément qui est chargé dès le début du chargement de la page. Son but est d'animer l'image en position "header". Finalement, à force de développement, la forme d'animation et l'image changée n'est pas limitiée au seul header. Fin de la présentation.
Mon problème: avec IE (ah, ce IE !!!!) : lorsque le plugin est activé, toute la page se trouve déplacée vers la gauche. L'alignement centré du contenu est anihilé et je ne trouve pas pourquoi. Il n'y a rien dans mon code qui fasse en sorte que ça se passe ainsi (aucune commande spécifique), mais ce semble inévitable.
J'aimerais que vous m'aidiez à redonner sa liberté à Joomla dans IE lorsque mon plugin est activé.
Voici le code complet:
Merci à l'avance
On peut charger le plugin et l'installer par le téléchargement disponible ici
mon plugin s'appelle chgheaderonload, c'est un élément qui est chargé dès le début du chargement de la page. Son but est d'animer l'image en position "header". Finalement, à force de développement, la forme d'animation et l'image changée n'est pas limitiée au seul header. Fin de la présentation.
Mon problème: avec IE (ah, ce IE !!!!) : lorsque le plugin est activé, toute la page se trouve déplacée vers la gauche. L'alignement centré du contenu est anihilé et je ne trouve pas pourquoi. Il n'y a rien dans mon code qui fasse en sorte que ça se passe ainsi (aucune commande spécifique), mais ce semble inévitable.
J'aimerais que vous m'aidiez à redonner sa liberté à Joomla dans IE lorsque mon plugin est activé.
Voici le code complet:
Code PHP:
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin');
global $LoginModule;
class plgSystemChgHeaderOnLoad extends JPlugin {
var $buffer = '';
function plgSystemChgHeaderOnLoad(&$subject, $config) {
parent::__construct($subject, $config);
//Set the language in the class
$config = JFactory::getConfig();
$options = array(
'Directory' => 'images/header/',
'ImgName' => 'header',
'Frequence' => 2,
'Methode' => 'Random',
'Speed' => 1
);
jimport('joomla.cache.cache');
$this->_cache = JCache::getInstance('page', $options);
}
function onAfterRender()
{
$app =& JFactory::getApplication();
if ( $app->getName() != 'site') { return true; }
global $LoginModule;
$ValeurLues = Array();
$list_ignore[] = '.';
$list_ignore[] = '..';
$list_ignore[] = 'index.html';
$prefixe = "";
$AuDela = substr($_SERVER["PHP_SELF"], 0, strpos($_SERVER["PHP_SELF"], "index.php"));
$handle = chdir($this->params->get( 'Directory', 'images/header/'));
$combien = substr_count($handle, "/");
$handle=opendir(".");
$compte = -1;
while ($file = readdir($handle)) {
if (!is_dir($file) && !in_array($file,$list_ignore)) {
$ValeurLues[++$compte] = $file;
}
}
closedir($handle);
for($x=0; $x<$combien; $x++) {
$handle = chdir("..");
}
$NomChoisi = ($this->params->get('Methode', 'Random') == 'Random') ? $ValeurLues[rand(0, $compte)] : $ValeurLues[0];
?>
<script language="javascript">
setTimeout("JeChangeImg()", 2000);
var Chemin = "http://<?php echo $_SERVER['HTTP_HOST'].$AuDela.$this->params->get( 'Directory', 'images/header/'); ?>";
var Compte = <?php echo $compte; ?>;
var DecalX = <?php echo $this->params->get('PosiX', 0); ?>;
var DecalY = <?php echo $this->params->get('PosiY', 0); ?>;
var Precedent = 0;
var Psg = 0;
var Fondu = <?php echo $this->params->get( 'Speed', 1); ?>;
var InitFondu = 0;
var LesTrans = Array("Fonderons", "GlisseronsG", "GlisseronsD", "Fonderons", "Exploserons", "Imploserons", "Fonderons", "CroitronsHG", "CroitronsHD", "Fonderons", "CroitronsBG", "CroitronsBD");
var SensFondu = 1;
var id = "<?php echo $this->params->get( 'ImgName', 'header'); ?>";
var ToutesDivs = Array();
var NextNum = 0;
var Vitesse = <?php echo $this->params->get( 'Speed', 1); ?>;
<?php if ($this->params->get( 'Frequence', 0) != 0) { ?>
MonChoix = "<?php echo $NomChoisi; ?>";
LesImages = Array();
<?php for ($x=0; $x<=$compte; $x++) {?>
LesImages[<?php echo $x; ?>] = "<?php echo $ValeurLues[$x]; ?>";
<?php } ?>
<?php } ?>
<?php
if ($this->params->get( 'MethodTransition', 'Fonderons') == 'Aleatoire') {
include_once("methodes/Fonderons.js");
include_once("methodes/GlisseronsG.js");
include_once("methodes/GlisseronsD.js");
include_once("methodes/Exploserons.js");
include_once("methodes/Imploserons.js");
include_once("methodes/CroitronsHG.js");
include_once("methodes/CroitronsHD.js");
include_once("methodes/CroitronsBG.js");
include_once("methodes/CroitronsBD.js");
} else {
include_once("methodes/".$this->params->get( 'MethodTransition', 'Fonderons').".js");
}
?>
function JeChangeImg () {
<?php if ($this->params->get( 'Frequence', 0) != 0) { ?>
Faisons = 1;
var NomFinal = Chemin + MonChoix;
<?php if ($this->params->get( 'ImgName', 'header') == 'body') { ?>
document.body.style.backgroundImage = 'url("' + NomFinal + '")';
<?php } else { ?>
if (Fondu == 0) {
document.getElementById(id).style.backgroundImage = 'url("' + NomFinal + '")';
}
<?php } ?>
<?php if ($this->params->get('Methode', 'Random') == 'Random') { ?>
var Chx = Math.random();
NextNum = Math.round(Chx * Compte);
<?php } else { ?>
<?php if ($this->params->get('Methode', 'Loop') == 'Loop') { ?>
if (NextNum > Compte) { NextNum = 0; }
<?php } else { ?>
if (NextNum > Compte) { Faisons = 0; }
<?php } ?>
Precedent = NextNum;
<?php } ?>
if (Faisons == 1) {
MonChoix = LesImages[NextNum];
if (Fondu > 0 && InitFondu == 0) {
<?php if ($this->params->get('Methode', 'Loop') != 'Random') { ?> NextNum = Precedent + 1; <?php } ?>
Transitons();
}
setTimeout("JeChangeImg()", <?php echo ($this->params->get( 'Frequence', 0)*1000); ?>);
}
<?php } else {?>
document.getElementById("<?php echo $this->params->get( 'ImgName', 'header'); ?>").style.backgroundImage = 'url("http://<?php echo $_SERVER['HTTP_HOST'].$AuDela.$this->params->get( 'Directory', 'images/stories/header/').$NomChoisi; ?>")';
if (Psg++ < 5) { setTimeout("JeChangeImg()", 5000); } //We pass here five times to makes sure the picture is there, even under very slow connections.
<?php } ?>
}
//On choisit ici le type de transition
//Fonction appelée par JeChangeImg
function Transitons () {
ProchTrans = "<?php echo $this->params->get( 'MethodTransition', 'Fonderons'); ?>";
if (ProchTrans == 'Aleatoire') {
var Suiv = Math.random();
Suiv = Math.round(Suiv * LesTrans.length);
ProchTrans = LesTrans[Suiv];
}
if ( ProchTrans == "Fonderons" ) { InitFondu = 100; SensFondu = -1; Fondons(); }
if ( ProchTrans == "GlisseronsG" ) {GlissonsG(); }
if ( ProchTrans == "GlisseronsD" ) {GlissonsD(); }
if ( ProchTrans == "Exploserons" ) {Explosons(); }
if ( ProchTrans == "Imploserons" ) {Implosons(); }
if ( ProchTrans == "CroitronsHG" ) {CroissonsHG(); }
if ( ProchTrans == "CroitronsHD" ) {CroissonsHD(); }
if ( ProchTrans == "CroitronsBG" ) {CroissonsBG(); }
if ( ProchTrans == "CroitronsBD" ) {CroissonsBD(); }
}
function ChgPage () {
document.location.href = "<?php echo $this->params->get( 'TheLink', 'index.php'); ?>";
}
function ApresTout () {
//Duplication de la div contenant l'image à changer, en vue du fondu
var Epais = 3;
var LesPetits = new Object();
var MesPetits = document.getElementById(id).childNodes;
//Attributs de la nouvelle div
if (navigator.appName == "'Microsoft Internet Explorer'") {
document.getElementById('Duplicata_div_ChgHeaderOnLoad').style.position = "fixed";
} else {
document.getElementById('Duplicata_div_ChgHeaderOnLoad').style.position = "absolute";
}
document.getElementById('Duplicata_div_ChgHeaderOnLoad').style.top = document.getElementById(id).offsetTop + DecalY;
document.getElementById('Duplicata_div_ChgHeaderOnLoad').style.left = document.getElementById(id).offsetLeft + DecalX;
document.getElementById('Duplicata_div_ChgHeaderOnLoad').style.height = document.getElementById(id).offsetHeight;
document.getElementById('Duplicata_div_ChgHeaderOnLoad').style.width = document.getElementById(id).offsetWidth;
document.getElementById('Duplicata_div_ChgHeaderOnLoad').onclick = ChgPage;
document.getElementById(id).onclick = ChgPage;
for(i=0;i<MesPetits.length;i++) {
if ( MesPetits[i].id != '' && MesPetits[i].id != undefined ) {
document.getElementById(MesPetits[i].id).style.zIndex = Epais++;
if (navigator.appName == "'Microsoft Internet Explorer'") {
document.getElementById(MesPetits[i].id).style.position = "fixed";
} else {
document.getElementById(MesPetits[i].id).style.position = "absolute";
}
}
}
}
</script>
<?php
$body = JResponse::getBody();
$body = preg_replace('/id="'.$this->params->get( 'ImgName', 'header').'"/', 'id="'.$this->params->get( 'ImgName', 'header').'" style="z-index: 1;" ', $body, 1);
$PosiX = strpos($body, 'id="'.$this->params->get( 'ImgName', 'header').'"');
$PostContenu = substr($body, $PosiX);
$Posi = strpos($body, '>', $PosiX ) + 1;
$PreContenu = substr($body, 0, $Posi );
$Contenu = '<div id="Duplicata_div_ChgHeaderOnLoad" style="z-index:2;"></div>';
$PostContenu = substr($body, $Posi);
$NouvContenu = $PreContenu.$Contenu.$PostContenu."<script>ApresTout();</script>";
JResponse::setBody($NouvContenu);
}
}
On peut charger le plugin et l'installer par le téléchargement disponible ici