...
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.
Pour d'autres solutions (expliquées pour uportal 3.2), voir Retaillage d'iframe.
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),
Bloc de code |
---|
--- 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.
+}
|
...
On définit le nom de la frame qui sera utilisé dans la feuille de randu
Bloc de code |
---|
<parameter>
<name>iFrameName</name>
<value>nomdeliframe</value> ==> nom de la frame qui sera utilisé dans les applications pour la retailler
<description></description>
<ovrd>N</ovrd>
</parameter>
|
Modifier la feuille Iframe.xsl de façon a ajouter le nom du canal
Bloc de code |
---|
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:param name="locale">en_US</xsl:param>
<xsl:template match="iframe" >
<iframe src="{url}" height="{height}" name="{iFrameName}" id="{iFrameName}" frameborder="0" width="100%">
This browser does not support inline frames.<br/>
<a href="{url}" target="_blank">Click here to view content</a> in a separate window.
</iframe>
</xsl:template>
</xsl:stylesheet>
|
...
2 - ajouter dans l'entete de page :
Bloc de code |
---|
<script type="text/javascript">
document.domain="domaine.univ.fr";
function resizeIframe(maframe){
if (navigator.userAgent.indexOf('Safari') == -1) {
var height = document.body.scrollHeight + 35; // (on ajoute + 35 car le calcul de la page peut varier, sur le meme navigateur ca peut se jouer et quelques px)
}
else{
var height = document.body.offsetHeight + 35;
}
<? if (isset($iFrameHeight) && $iFrameHeight != "") echo "\nheight=$iFrameHeight;\n"; ?>
maframe.style.height = height +"px";
};
</script>
|
3 - ajouter dans le pied de page :
Bloc de code |
---|
<script type="text/javascript">
document.domain="domaine.univ.fr";
try{
maframe = parent.document.getElementById('<?=$iFrameName?>');
maframe.onload = resizeIframe(maframe);
window.onresize = resizeIframe(maframe);
}
catch(e){}
</script>
|
...
Preciser votre nom de domaine dans le fichier de constantes : editor/_source/fckconstants.js
Bloc de code |
---|
var FCK_RUNTIME_DOMAIN = "domaine.univ.fr";
|
...
Ajouter dans theme/votre-themes/header.html (ligne 9)
Bloc de code |
---|
<script type="text/javascript">
if (navigator.appName != "Microsoft Internet Explorer"){ document.domain="domaine.univ.fr"; }
</script>
|
...
Ajouter dans theme/votre-themes/footer.html (ligne 30)
Bloc de code |
---|
<script type="text/javascript">if (navigator.appName != "Microsoft Internet Explorer"){
document.domain="domaine.univ.fr";
maframe = parent.document.getElementById('CMoodle'); // nom de la frame déclaré dans le pubchan (ici : CMoodle)
function resizeIframe() {
if (navigator.userAgent.indexOf('Safari') == -1) {
var height = document.body.scrollHeight + 35; // (on ajoute + 35 car le calcul de la page peut varier, sur le meme navigateur ca peut se jouer et quelques px)
}
else{
var height = document.body.offsetHeight + 35;
}
maframe.style.height = height +"px";
};
maframe.onload = resizeIframe;
window.onresize = resizeIframe;
}</script>
|
...
- lib/editor/htmlarea/popups/popup.js (ligne 15)
- lib/editor/htmlarea/coursefiles.php (ligne 54)
- lib/editor/htmlarea/popups/fullscreen.php (ligne 24)
la ligne à ajouter est :
Bloc de code |
---|
if (navigator.appName != "Microsoft Internet Explorer"){ document.domain="domaine.univ.fr"; }
|
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)
Bloc de code |
---|
Remplacer
parent_object = opener.HTMLArea._object;
par
parent_object = parent.opener.HTMLArea._object;
|
...