Stage Flavien Crochard Semaine 9
Résolution du bug du padding-bottom.
Fabien a résolu une partie de ce bug. Si un élément en position fixed dépassait le bas de la page, une boucle infinie apparaissait et donc impossible d'obtenir le document PDF.
Cette boucle finie est crée par l'appel de la fonction check_page_break(Frame $frame) dans le fichier page_frame_decorator.cls.php.
Il faut donc rajouter un test pour détecter si l'objet $frame est en position fixe. Si oui, alors on retourne false (il n'y a pas de changement de page).
Pour ma part, j'ai rajouté un test supplémentaire. On parcourt également les parents de l'objet $frame-+, car il pourrait être imbriqué dans un élément qui lui est en position fixe. Si on en trouve un, alors on retourne -+false.
Bug de bordures d'images.
Jusqu'à présent, si on appliquait une bordure sur une image, cette bordure était décalée par rapport à l'image. Pourquoi ? Parce qu'au parcourt des élements de la DOM?, si l'élément courant a pour nom img, alors on créé un élément fils img_inner qui sera positionné à la même place que img et qui contient l'url de l'image. On ne tenait pas compte de la bordure éventuelle.
Pour régler ce problème, j'ai modifié le fichier inline_renderer.cls.php. Ce fichier concerne le rendu des bordures et des backgrounds des éléments qui ont l'attribut css display à la valeur inline. Les changements concernent donc les coordonnées (x, y) des bordures dessinées ainsi que l'épaisseur.
Ensuite, un petit changement dans le fichier frame_tree.cls.php (cette classe permet de construire un arbre d'objets frame à partir de la DOM). A la création de l'objet img_inner, on ne recopie pas le style et les attributs width, height et border.
J'ai également modifié le fichier attribute_translator.cls.php. Cela concerne les attributs html 4.01 qui seront remplacés par des règles css. J'ai changé l'attribution des anciens attributs de img_inner à l'élément img. Avant :
Après :
Modification dans le module dPdeveloppement?
Yohann m'a fait remarqué l'exécution redondante de requêtes lorsqu'il n'y a qu'un seul établissement (les informations contenu dans le volet de l'établissement courant sont comprises dans le volet Général) . J'ai donc modifié vw_metrique.php afin de tester avant d'effectuer les requêtes s'il y a plusieurs établissements. Dans vw_metrique.tpl, j'ai modifié la création du volet concernant l'établissement courant afin qu'il n'apparaisse seulement losqu'il y a plusieurs établissements.
Autre bug
La résolution de l'url de l'image en background était faite en double : une première fois dans la fonction _image() dans le fichier style.cls.php, puis dans le déroulement normal avec la fonction resolve_url().
Donc, j'ai supprimé la résolution dans _image(). J'ai également modifé la fonction build_url($protocol, $host, $base_path, $url) dans le fichier functions.inc.php. Cette modification concerne la concaténation de $url avec le $base_path, dans le cas où $protocol et $host sont vides. Dans tous les cas, la chaîne retournée a le format suivant :
-
$base_path - un optionnel slash si
$base_pathn'en contient pas en fin -
$url
Dernièrement modifié par flavien
, Basé sur le travail de
lryo
et
system
.
Modifiée dernièrement le vendredi 02 de avril, 2010 10h58m21.
