Retailler automatiquement les canaux iFrame pour éviter les doubles assenceur
Pour des raisons de confort pour l'utilisateur, on retaille les canaux de façon à supprimer les doubles assenceurs. Cette page présente une méthode possible pour les applications PHP
Version concernée :
uPortal-esup et esupdev 2.6 versions ALM et DLM
Patcher la classe CInlineFrame
Patcher la class CInlineFrame de façon à rajouter un nom à la frame (c'est plus simple si on en a plusieurs sur la même page),
--- CInlineFrame.java 2008-12-09 10:14:52.000000000 +0100
+++ CInlineFrame.java.new 2008-12-09 10:15:12.000000000 +0100
@@ -51,6 +51,7 @@
// Obtain url and height, both static parameters
String srcUrl = staticData.getParameter("url"); // the url for the IFrame content
String frameHeight = staticData.getParameter("height"); // the height of the IFrame in pixels
+ String iFrameName = staticData.getParameter("iFrameName"); // the name of the IFrame in pixels
Document doc = null;
try {
@@ -62,12 +63,19 @@
// Create XML doc
Element iframeE = doc.createElement("iframe");
+
Element urlE = doc.createElement("url");
urlE.appendChild(doc.createTextNode(srcUrl));
iframeE.appendChild(urlE);
+
Element heightE = doc.createElement("height");
heightE.appendChild(doc.createTextNode(frameHeight));
iframeE.appendChild(heightE);
+
+ Element iFrameNameE = doc.createElement("iFrameName");
+ iFrameNameE.appendChild(doc.createTextNode(iFrameName));
+ iframeE.appendChild(iFrameNameE);
+
doc.appendChild(iframeE);
XSLT xslt = XSLT.getTransformer(this, runtimeData.getLocales());
@@ -105,4 +113,4 @@
sbKey.append("locales:").append(LocaleManager.stringValueOf(runtimeData.getLocales()));
return sbKey.toString();
}
-}
\ Pas de fin de ligne à la fin du fichier.
+}
le fichier est joint et commenté (partie ajout IUFM)
et la partie a ajouter dans le pubchan :
<parameter>
<name>iFrameName</name>
<value>cdoc-masterisation</value> ==> nom de la frame qui sera utilisé pour la retailler
<description></description>
<ovrd>N</ovrd>
</parameter>
Modifier la fauille xhtml-theme.xsl de façon a définir le domaine :
Ajouter dans le bloc javascript (ligne 26, 65, 141 suivant si on est connecté ou pas ) la ligne :
document.domain="bretagne.iufm.fr";
ensuite dans les applis PHP ,
1 - declarer la variable $iFrameName qui correspond au parametre ci dessus.
Pour certaines applis qui comporte des frames ca ne fonctionne pas alors j'ai declarer la variable $iFrameHeight qui force la hauteur de la page
2 - ajouter dans l'entete de page :
<script type="text/javascript">
document.domain="bretagne.iufm.fr";
function resizeIframe(maframe)
else
<?
if (isset($iFrameHeight) && $iFrameHeight != "") echo "\nheight=$iFrameHeight;\n";
?>
maframe.style.height = height +"px";
};
</script>
3 - ajouter dans le pied de page :
<script type="text/javascript">
document.domain="bretagne.iufm.fr";
try
catch(e){}
</script>
La partie ajoutée dans l'entete pourait etre fait dans le pied, mais si on veut agrandir la taille quand on clic un menu déroulant type arbre, il faut que la fonction soit connue.
C'est tout, c'est relativement simple a mettre en place mais demande bcp de travail pour repasser dans toutes les applis et que celles ci soit bien formatée. J'ai quelques probleme sur safari qui devrait etre réglé rapidemement.
Il faut noter également que seul la derniere version de FCKeditior prend en compte la notion de domaine.
Enfin, c'est un peu plus compliquer pour Moodle, voici ce qu'il faut modifier (sauf sous IE qui pose des probleme avec l'editeur)
Ajouter sans theme/iufm/header.html (ligne 9)
<script type="text/javascript">
if (navigator.appName != "Microsoft Internet Explorer")
// on ne gere pas sous ie, on verra avec la v2 ou l'editeur change
dans theme/iufm/footer.html (l. 30)
if (navigator.appName != "Microsoft Internet Explorer"){
document.domain="bretagne.iufm.fr";
maframe = parent.document.getElementById('CMoodle'); // nom de la frame in the parent
function resizeIframe()
;
maframe.onload = resizeIframe;
window.onresize = resizeIframe;
}
L'éditeur de texte utilisé dans les forums, wiki, devoirs, bases de données, étiquettes... présente alors ses dysfonctionnements : - impossible d'ajouter une URL, - d'ajouter une image, - d'ouvrir en pleine fenêtre. Il faut ajouter le domaine bretagne dans les fichiers suivants :
la ligne est : if (navigator.appName != "Microsoft Internet Explorer")
dans les fichiers :
* lib/editor/htmlarea/popups/popup.js (ligne 15)
* lib/editor/htmlarea/coursefiles.php (ligne 54)
* lib/editor/htmlarea/popups/fullscreen.php (ligne 24)
Une autre correction est nécessaire pour l'ouverture en plein écran (popup) de l'éditeur. Il s'agit d'ajouter "parent" devant "opener.HTMLArea._object" dans le fichier :
- lib/editor/htmlarea/popups/fullscreen.php (ligne 120)
Remplacer
parent_object = opener.HTMLArea._object;
par
parent_object = parent.opener.HTMLArea._object;
et ca fonctionne
Pour voir ce que ca donne vous pouvez allez sur notre ent (ent.bretagne.iufm.fr), le canal "Votre nouvel Espace Numérique de Travail" inclus cette modif, ainsi que le menu "Aide"